Model view controller 控制器的捕获方法名称

Model view controller 控制器的捕获方法名称,model-view-controller,hyperlink,Model View Controller,Hyperlink,我有母版页,在母版页的底部有这样的菜单: <div class="footMenu"> <ul> <li class="active"><a href="">test1</a> </li> <li><a href="">test2</a></li> <li><a href="">test3</

我有母版页,在母版页的底部有这样的菜单:

<div class="footMenu">
    <ul>
        <li class="active"><a href="">test1</a> </li>
        <li><a href="">test2</a></li>
        <li><a href="">test3</a></li>               
    </ul>
</div>

根据加载的视图,我需要将
class=“active”
放在当前li项的前面


如何做到这一点?

在asp.net mvc应用程序中,我通常通过设置包含控制器名称和操作名称的body标记的id来解决这一问题。然后,我使用css根据body标记的id为链接设置不同的样式

我通常通过创建一个html助手扩展来实现这一点,该扩展获取body标记的id字符串。看起来可能是这样的:

public static string BodyId(this HtmlHelper helper) {
    var controllerName = helper.ViewContext.RouteData.GetRequiredString("controller").ToLower();
    var actionName = helper.ViewContext.RouteData.GetRequiredString("action").ToLower();

    return string.Format("{0}-{1}", controllerName, actionName);
}
<body id="<%=Html.BodyId()%>">
<ul>
    <li><a href="" id="home-index-link">test1</a></li>
    <li><a href="" id="account-login-link">test2</a></li>       
</ul>
#home-index #home-index-link, #account-login #account-login-link {
    /* Styles for selected links */
}
然后像这样使用它:

public static string BodyId(this HtmlHelper helper) {
    var controllerName = helper.ViewContext.RouteData.GetRequiredString("controller").ToLower();
    var actionName = helper.ViewContext.RouteData.GetRequiredString("action").ToLower();

    return string.Format("{0}-{1}", controllerName, actionName);
}
<body id="<%=Html.BodyId()%>">
<ul>
    <li><a href="" id="home-index-link">test1</a></li>
    <li><a href="" id="account-login-link">test2</a></li>       
</ul>
#home-index #home-index-link, #account-login #account-login-link {
    /* Styles for selected links */
}
当然,如果您对
  • 标记而不是
    标记执行相同的操作,它将起作用


    如果您不想这样做,当然可以使用routedata(就像我在这里的html助手中所做的那样)。键为“action”的值将包含操作的名称,键为“controller”的值将包含控制器的名称。

    非常难解决。如果(method==“somemethod”){%class=“active”%}%>是的,我猜会是这样的。这就是为什么我按照我解释的那样做。避免使用if语句。但是如果您想编写if语句,那么:ViewContext.RouteData.GetRequiredString(“action”)(正如我在回答的末尾所解释的)将包含您正在执行的操作的名称。