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