asp.net-mvc-3 – 如何在ASP MVC3中创建可重用的导航菜单?
发布时间:2020-12-16 09:35:49 所属栏目:asp.Net 来源:网络整理
导读:我有几个视图现在重复的以下导航html /代码: ul class="topNav" li class="selected"@Html.ActionLink("Dashboard","Dashboard",new { id = ViewContext.RouteData.GetRequiredString("id") })/li li@Html.ActionLink("Stats","Stats",new { id = ViewConte
我有几个视图现在重复的以下导航html /代码:
<ul class="topNav"> <li class="selected">@Html.ActionLink("Dashboard","Dashboard",new { id = ViewContext.RouteData.GetRequiredString("id") })</li> <li>@Html.ActionLink("Stats","Stats",new { id = ViewContext.RouteData.GetRequiredString("id") })</li> <li>@Html.ActionLink("Questions","Questions",new { id = ViewContext.RouteData.GetRequiredString("id") })</li> <li>@Html.ActionLink("Answers","Answers",new { id = ViewContext.RouteData.GetRequiredString("id") })</li> <li>@Html.ActionLink("Contacts","Contacts",new { id = ViewContext.RouteData.GetRequiredString("id") })</li> </ul> 当然,在每个View中,li的class =“selected”都会被更改.有没有一种简单的方法可以将这段代码放在局部视图或布局视图中? 另外,我真的必须使用ViewContext.RouteData.GetRequiredString(“id”)来获取控制器的id参数,还是有更简单的方法? 解决方法
这有两种方法可以解决这个问题.
>如果您想要一个真正可重用(Application independ解决方案),您应该创建一个HtmlHelper方法 public static class ControllerHelper { /// <summary> /// Checks the current action via RouteData /// </summary> /// <param name="helper">The HtmlHelper object to extend</param> /// <param name="actionName">The Action</param> /// <param name="controllerName">The Controller</param> /// <returns>Boolean</returns> public static bool IsCurrentAction(this HtmlHelper helper,string actionName,string controllerName) { string currentControllerName = (string)helper.ViewContext.RouteData.Values["controller"]; string currentActionName = (string)helper.ViewContext.RouteData.Values["action"]; if (currentControllerName.Equals(controllerName,StringComparison.CurrentCultureIgnoreCase) && currentActionName.Equals(actionName,StringComparison.CurrentCultureIgnoreCase)) return true; return false; } } <ul class="topNav"> <li @if(Html.IsCurrentAction("DashBoard","DashBoard")) { <text>class="selected"</text> }>@Html.ActionLink("Dashboard",new { id = ViewContext.RouteData.GetRequiredString("id") })</li> <li>@if(Html.IsCurrentAction("Stats","Stats")) { <text>class="selected"</text> }>@Html.ActionLink("Stats",new { id = ViewContext.RouteData.GetRequiredString("id") })</li> // .... </ul> 请告诉我,如果你想实施第一种方法,我会提供更多帮助 希望这可以帮助 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – Razor视图引擎2.x中有什么新功能?
- asp.net – IIS和线程
- asp.net-core – 如何在IServiceCollection.Configure()中使
- asp.net-core – 如何从Microsoft.NetCore.App 2.0更新到2.
- ASP.NET Web Pages - 对象
- 缺少ASP.NET 5模板
- asp.net – Application_Start和Application_OnStart之间的
- asp.net-mvc-3 – 将值传递给控制器??时,ASP.NET MVC datet
- asp.net-mvc-2 – 未针对请求的URL配置默认文档,并且未在服
- asp.net-mvc – asp.net mvc – string或int的路由(即/ typ