我有这个菜单,我想让我的布局(基本上是我网站上的所有视图)都可用。我希望在页面请求中维护菜单的状态(是否打开或关闭树项目)。我想要做的是可能有一个从我的布局页面调用的子动作,它捕获包含树状态信息的一些cookie或会话信息,以便我可以重新构建树,确切地说它是最后一次请求的方式。我的问题是,从我读的内容来看,从控制器的动作中调用诸如Session和Cookie之类的东西是不好的做法。我想知道的是解决这个问题的更优雅的方式。如果我必须使用Cookie和Session,任何人都有如何嘲笑他们的想法?谢谢在视图中保留菜单树状态 - ASP.NET MVC 3
0
A
回答
0
我们可以将菜单作为部分视图。
渲染局部视图的操作将接受渲染状态的参数。每个链接将使用不同的参数调用该操作。
例如,
public PartialViewResult RenderNavigation(int Menuroot, int subMenuItem)
{
IList<MyNavigationItem> navigationItems=GetNavigation();// Some method that'll read nvigationitems.
navigationItems.Where(n=> n.menuId.Equals(Menuroot) ||n.IsOpen.Equals(subMenuItem)).ToList().ForEach(i=> i.IsOpen=true);
return View("SomeMenuView",navigationItems);
}
public class MyNavigationItem{
int menuId{get;set;}
bool IsOpen{get;set;}
int parentMenuId{get;set;} // set default -1 for Root Items
}
1
我的问题是,从我读,这是不好的做法,那些控制器动作
有趣内调用之类的东西 会话和饼干从。这篇文章的作者是否解释了为什么这是一种不好的做法?从控制器操作访问会话和cookie没有任何问题。实际上,使用会话来处理这种事情可能并不合适,因为如果用户关闭浏览器,您将无法坚持树的布局,而使用持久cookie将是可能的。
+0
谢谢。我记得原因是单元测试。按照相同的方式排序,最好在控制器操作中使用模型绑定,而不是直接访问FormsCollection。问题是我在布局上使用了一个子动作,所以我不确定modelbinding是否是一个选项。 – enamrik 2012-01-15 17:12:07
相关问题
- 1. 在jquery菜单中保留状态
- 2. 菜单状态 - ASP.Net MVC
- 3. ASP.NET MVC视图状态
- 4. ASP.NET/MVC 3状态
- 5. 在Asp.net中使用视图状态保留文本框的值?
- 6. 在Silverlight中保留状态3
- 7. ASP.NET MVC 3 - 自定义配置文件并保留在状态服务器中
- 8. MVC 4树形视图菜单
- 9. 在Spring MVC的两页保留状态
- 10. 在MVC中保持状态3
- 11. Android View Pager保留视图状态
- 12. Django视图之间的保留状态
- 13. 视图状态不保留值
- 14. 在ASP.NET MVC中保留ViewModels
- 15. ASP.Net MVC 3 - 密码保护视图
- 16. asp.net mvc 3和动态视图生成
- 17. asp.net视图状态
- 18. asp.net的视图状态保持得
- 19. ASP.Net MVC部分视图保持其模型状态?
- 20. 视图状态在asp.net
- 21. Ajax表单视图问题,asp.net mvc 3
- 22. asp.net mvc动态javascript菜单
- 23. 动态生成选择菜单不在编辑视图中保持状态
- 24. 在最后点击的菜单项上保留悬停状态
- 25. 在Ruby中刷新页面时记住树视图菜单的状态
- 26. 在Recycler视图中保留项目的状态
- 27. ASP.NET MVC - 控件如何保留其状态
- 28. 视图模型和动态菜单的最佳实践 - ASP.NET MVC
- 29. 构建树视图菜单
- 30. ASP.NET MVC(表单登录):视图状态MAC验证失败
感谢您的回应!那么,如何坚持从请求到请求的菜单呢? – enamrik 2012-01-15 07:56:11
不要通过请求去请求。最好把它看成是一页一页的。对于每个页面菜单是不同的。可以在不同参数的每个页面中调用部分视图。 – Manas 2012-01-15 17:35:12
所以参数会来自哪里?请求参数?会议? – enamrik 2012-01-15 17:40:23