asp.net-mvc – 在asp.net mvc主页面的导航列表中添加“活动”标签

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 在asp.net mvc主页面的导航列表中添加“活动”标签前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在默认的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")%>

猜你在找的asp.Net相关文章