Asp.net 如何获得';选定的';选项卡是否包含以下代码?

Asp.net 如何获得';选定的';选项卡是否包含以下代码?,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我正在尝试将单击的选项卡“选中”。我有一个class='selected',如果我可以通过编程获得值集,它将正确设置。我使用的扩展方法基本上是有效的,它在链接上设置class='selected',而不是li。如果我能以某种方式设置li class='selected',那么它就会工作。有什么想法吗 谢谢 <div id="tabs" class="shadetabs"> <ul> <li id="tab10"

我正在尝试将单击的选项卡“选中”。我有一个class='selected',如果我可以通过编程获得值集,它将正确设置。我使用的扩展方法基本上是有效的,它在链接上设置class='selected',而不是li。如果我能以某种方式设置li class='selected',那么它就会工作。有什么想法吗

谢谢

<div id="tabs" class="shadetabs">     

    <ul>         
        <li id="tab10" class="test">@Html.MenuLink("Overview", "Index", "Statistics")</li>   
        <li id="tab20" class="test">@Html.MenuLink("Detail View", "Detail", "Statistics")</li>   
        <li id="tab30" class="test">@Html.MenuLink("Trends", "Trends", "Statistics")</li> 
   </ul> 

</div>


public static class HTMLHelper
{
    public static MvcHtmlString MenuLink(this HtmlHelper htmlHelper, string linkText, string actionName, string controllerName)
    {
        var routeData = htmlHelper.ViewContext.RouteData;
        string currentAction = routeData.GetRequiredString("action");
        string currentController = routeData.GetRequiredString("controller");

        if (actionName == currentAction && controllerName == currentController)
        {

            return htmlHelper.ActionLink(linkText, actionName, controllerName, null, new { @class = "selected" });
        }

        return htmlHelper.ActionLink(linkText, actionName, controllerName);
    }       
}

  • @Html.MenuLink(“概述”、“索引”、“统计数据”)
  • @Html.MenuLink(“详细视图”、“详细信息”、“统计数据”)
  • @Html.MenuLink(“趋势”、“趋势”、“统计数据”)
公共静态类HTMLHelper { 公共静态MvcHtmlString菜单链接(此HtmlHelper HtmlHelper、字符串链接文本、字符串操作名、字符串控制器名) { var routeData=htmlHelper.ViewContext.routeData; string currentAction=RoutedData.GetRequiredString(“操作”); string currentController=RoutedData.GetRequiredString(“控制器”); 如果(actionName==currentAction&&controllerName==currentController) { 返回htmlHelper.ActionLink(linkText、actionName、controllerName、null、new{@class=“selected”}); } 返回htmlHelper.ActionLink(linkText、actionName、controllerName); } }
这里有一种方法可以做到这一点

 <ul id="menu">
    <li id="tab10" class="test @Html.AddClassIfRouteMatches("Home", "Index", "Home", "selected")">@Html.ActionLink("Home", "Index", "Home")</li>
    <li id="tab20" class="test @Html.AddClassIfRouteMatches("Detail View", "Detail", "Statistics", "selected")">@Html.ActionLink("Detail View", "Detail", "Statistics")</li>
     <li id="tab30" class="test @Html.AddClassIfRouteMatches("Detail View", "Detail", "Statistics", "selected")">@Html.ActionLink("Trends", "Trends", "Statistics")</li>
 </ul>


如果当前路由与我们的参数匹配,我们可以使用助手来呈现字符串,而不是以不同的方式呈现任何内容。。这样,您就不会失去所有ActionLink覆盖的可用性。

我期待看到一个示例。谢谢我有一个很好的例子,只是我要到星期一才能访问代码!我会再查的。我想看看其他的方法来做这件事,所以我会很感激的。谢谢
public static string AddClassIfRouteMatches(this HtmlHelper htmlHelper, string linkText, string actionName, string controllerName, string selectedClassName)
 {
    var routeData = htmlHelper.ViewContext.RouteData;
    string currentAction = routeData.GetRequiredString("action");
    string currentController = routeData.GetRequiredString("controller");

    if (actionName == currentAction && controllerName == currentController)
    {
        return selectedClassName;
    }
    return string.Empty;
 }