我有一个导航栏,我想成为部分导航栏。导航栏的内容会略有不同,例如,如果用户已登录,或者您在某个页面上,您可能会获得额外的链接。
我如何最好地处理向部分提供数据?我应该在 ViewData 中为每个控制器传递这个吗?
选项列表对我的帮助最大,因为我可能不得不使用一些不同的技术。
我有一个导航栏,我想成为部分导航栏。导航栏的内容会略有不同,例如,如果用户已登录,或者您在某个页面上,您可能会获得额外的链接。
我如何最好地处理向部分提供数据?我应该在 ViewData 中为每个控制器传递这个吗?
选项列表对我的帮助最大,因为我可能不得不使用一些不同的技术。
为它制作一个模型。创建一个类NavModel
,该类在其构造函数中收集它所代表的所有数据(友好的用户名、当前页面等)并将它们作为公共属性发布。然后像往常一样将模型绑定到视图。哦,避免在视图中直接实例化导航模型,而是创建一个控制器操作(称为导航),它实例化NavModel
并返回导航部分视图。将该操作标记为ChildActionOnlyAttribute
客户端无法请求该操作。然后@Html.RenderAction
在需要渲染部分导航的视图中使用(通常是布局视图)。
前段时间我遇到了同样的问题,当我必须向管理员显示一些菜单,向超级管理员显示一些菜单,向其他人显示一些菜单时......我在那种情况下做了什么。我做了一个返回部分视图的动作并将其呈现在母版页上。视图是强类型的。(一个属性代表用户角色的类。)所以使用强类型类我在我的剃刀视图中编写了 if 和 else if 逻辑......这解决了我的问题......希望这会对你有所帮助。