在默认的asp.net mvc项目中,在Site.Master文件中,有一个菜单导航列表:
<div id="menucontainer"> <ul id="menu"> <li><%= Html.ActionLink("Home","Index","Home")%></li> <li><%= Html.ActionLink("About Us","About","Home")%></li> </ul> </div>
这将在浏览器中呈现:
<div id="menucontainer"> <ul id="menu"> <li><a href="/">Home</a></li> <li><a href="/Home/About">About Us</a></li> </ul> </div>
我想能够基于被调用的视图动态设置活动列表项。也就是说,当用户正在查看主页时,我想要创建以下HTML:
<div id="menucontainer"> <ul id="menu"> <li class="active"><a href="/">Home</a></li> <li><a href="/Home/About">About Us</a></li> </ul> </div>
我希望做到这一点的方式是:
<div id="menucontainer"> <ul id="menu"> <li <% if(actionName == "Index"){%> class="active"<%}%>><%= Html.ActionLink("Home","Home")%></li> <li <% if(actionName == "About"){%> class="active"<%}%>><%= Html.ActionLink("About Us","Home")%></li> </ul> </div>
这里的关键是<%if(actionName ==“Index”){%> class =“active”<%}%>线。我不知道如何确定当前actionName是什么。
任何建议如何做到这一点?或者,如果我完全错误的轨道,有没有更好的方法来做到这一点?
解决方法
我自己做了一个帮助方法来处理这种类型的事情。在我的主页的代码(可以推到一个扩展方法…可能是一个更好的方法),我把以下代码。
protected string ActiveActionLinkHelper(string linkText,string actionName,string controlName,string activeClassName) { if (ViewContext.RouteData.Values["action"].ToString() == actionName && ViewContext.RouteData.Values["controller"].ToString() == controlName) return Html.ActionLink(linkText,actionName,controlName,new { Class = activeClassName }); return Html.ActionLink(linkText,controlName); }
然后,我只是调用它在我的页面,如此:
<%= ActiveActionLinkHelper("Home","Home","selected")%>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。