gpt4 book ai didi

asp.net-mvc - 在asp.net mvc母版页的导航列表中添加 “active”标签

转载 作者:行者123 更新时间:2023-12-03 07:53:54 25 4
gpt4 key购买 nike

在默认的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>

我希望能够根据正在调用的 View 动态设置 Activity 列表项。也就是说,当用户查看主页时,我希望创建以下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", "Index", "Home")%></li>
<li <% if(actionName == "About"){%> class="active"<%}%>><%= Html.ActionLink("About Us", "About", "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, actionName, controlName);
}

然后,我就这样在页面中调用它:
<%= ActiveActionLinkHelper("Home", "Index", "Home", "selected")%>

关于asp.net-mvc - 在asp.net mvc母版页的导航列表中添加 “active”标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/214583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com