asp.net-mvc – 如何判断我在ASP.NET MVC应用程序中的页面
发布时间:2020-12-16 03:32:42 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试根据我正在查看的页面来了解如何修改页面的某些部分.我可以使用页面的控制器设置某些元素,但我正在考虑更多关于全局导航菜单(当前正在应用程序的MasterPage中使用RenderAction呈现)活动状态. 就像我在屏幕顶部有一些导航链接(以SO为例) 问题|标签|
我正在尝试根据我正在查看的页面来了解如何修改页面的某些部分.我可以使用页面的控制器设置某些元素,但我正在考虑更多关于全局导航菜单(当前正在应用程序的MasterPage中使用RenderAction呈现)活动状态.
就像我在屏幕顶部有一些导航链接(以SO为例) 问题|标签|用户| … 如果我在“问题”区域或页面中,那么我希望“问题”链接以不同的颜色激活. 我不想在每个页面上管理这个并且我不想将值发送到我的母版页然后通过RenderAction发送它,因为我觉得它很混乱.我想要的是Action,只知道渲染页面所在的区域并突出显示必要的元素. 解决方法
ViewMasterPage具有ViewContext属性. ViewContext包含RouteData. RouteData应该有一个控制器名称和当前操作的条目(如果它们不是默认值).您可以在母版页的逻辑中使用这些来确定要突出显示的导航元素.
同样,如果您使用部分视图进行导航,则可以通过ViewUserControl上的ViewContext属性访问RouteData. 编辑:我不认为它需要复杂. <% var current = this.ViewContext.RouteData.Values["controller"] as string ?? "home"; %> <ul> <li><%= Html.ActionLink( "Home","index","home",null,new { @class = current == "home" ? "highlight" : "" } %></li> ... </ul> 实际上,我甚至可以将它重构为HTML扩展以使其更容易.事实证明,助手已经有了对ViewContext的引用,因此您甚至不需要确定视图中的当前控制器.请注意,我只显示一个签名,您可以根据需要添加其他签名来处理其他路径数据和html属性(这些属性需要合并). <ul> <li><%= Html.NavLink( "Home","home" ) %></li> ... </ul> public static class HtmlHelperExtensions { public static string NavLink( this HtmlHelper helper,string text,string action,string controller ) { string current = helper.ViewContext.RouteData.Values["controller"] as string; object attributes = null; if (string.Equals( current,controller,StringComparison.OrdinalIgnoreCase )) { attributes = new { @class = "highlight" }; } return this.ActionLink( text,action,attributes ); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 在SQL中选择查询列中的所有值
- asp.net-mvc-5 – 使用Glass Mapper的Sitecore 8可编辑字段
- ASP.NET应用程序配置IIS后,会出现错误
- 是否可以在IIS中禁用ASP.NET网站睡眠?
- 在ASP.NET中使用数据源控件真的很专业吗?
- asp.net-mvc – 与Microsoft HTTP Client Libraries v2.1.1
- ASP.NET MVC 4和Entity Framework 5.0中的MySQL连接 – 多个
- asp.net-mvc – 检查上传的文件是否是C#ASP.NET MVC中的图像
- ASP.NET Web API可以在与MVC相同的URL上工作吗?
- 是否可以更改ASP.NET MVC 3路由约束,以便它们返回带有JSON主
推荐文章
站长推荐
- 动态背景图像(ASP.NET)
- asp.net-mvc – WebForms和MVC可以存在于一个项目
- asp.net – 存储库是否应该调用另一个存储库?或
- 处理ASP.NET MVC中的异步请求
- asp.net-mvc – Signalr从集线器外部调用特定客户
- asp.net-mvc – 在ASP.NET MVC中获取当前操作/控
- asp.net-mvc-5.1 – 如何在EnumDropDownListFor中
- asp.net-mvc – ASP.NET MVC 5如何在Identity 2.
- ASP.NET应用程序的安全性
- asp.net-mvc – url.Action在ASP.NET MVC页面上的
热点阅读