gpt4 book ai didi

asp.net-mvc - 从子页面选择 MVC 母版页上的右侧菜单

转载 作者:行者123 更新时间:2023-12-02 05:28:19 25 4
gpt4 key购买 nike

我的 MVC 应用程序的共享 _layout.cshtm 文件(母版页)中有几个列表项。

类似于:

<ul>
<li>Home</li>
<li>about</li>
<li>contact</li>
<li>blog</li>
</ul>

当用户位于主页时,我希望主页li项目具有selected类,如下所示:

<li class="selected">Home</li>

等等。最好的方法是什么?

在常规的 ASP.NET 网站中,我曾经在母版页中有一个方法,并从子页面调用该方法,但在 MVC 中我不知道该怎么做。

谢谢。

最佳答案

您可以编写自定义帮助器方法:

public static MvcHtmlString MenuItem(
this HtmlHelper htmlHelper,
string text,
string action,
string controller
)
{
var li = new TagBuilder("li");
var routeData = htmlHelper.ViewContext.RouteData;
var currentAction = routeData.GetRequiredString("action");
var currentController = routeData.GetRequiredString("controller");
if (string.Equals(currentAction, action, StringComparison.OrdinalIgnoreCase) &&
string.Equals(currentController, controller, StringComparison.OrdinalIgnoreCase))
{
li.AddCssClass("selected");
}
li.SetInnerText(text);
return MvcHtmlString.Create(li.ToString());
}

然后:

<ul>
@Html.MenuItem("Home", "home", "home")
@Html.MenuItem("About", "about", "home")
@Html.MenuItem("Contact", "contact", "home")
@Html.MenuItem("Blog", "blog", "home")
</ul>

帮助器检查当前操作和 Controller ,如果它们与作为参数传递给帮助器的操作和 Controller 匹配,它将把selected CSS类附加到li

关于asp.net-mvc - 从子页面选择 MVC 母版页上的右侧菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7066813/

25 4 0