如果操作链接的url与正在显示的页面匹配,那么将选定的css类添加到ActionLink的最简单方法是什么?
谢谢!
答案 0 :(得分:2)
这可能会成功
var currentUrl = location.pathname; //spits out something like 'Home/About'
$('a').each(function() {
if ($(this).attr('href') == currentUrl) {
$(this).addClass('yourClassName');
}
});
答案 1 :(得分:0)
我们将当前网址与每个导航选项的正则表达式进行匹配,并在匹配时将其设置为选中状态。
答案 2 :(得分:0)
将LinkCssNaame等属性添加到您的视图模型中,让控制器将其设置在服务器上
答案 3 :(得分:0)
这是一个很难回答的问题,乍一看我脑海中唯一有效的答案是“它取决于”。你的意思是简单的代码,简单易懂或简单易懂......
可以使用jquery和window.location.pathname去掉并根据控制器和/或操作应用类(通常是.substr(1和/或2))。
可以使用带有SelectedItem指针的MenuModel完成,基于它添加类。 可以使用MenuItem []选择属性,基于它添加类。
它可能以各种其他方式完成(ViewBag让人想起)。 每个包括两个步骤: 1.保存/计算所选菜单项 2.根据此设置课程。
至于什么更简单,我认为这取决于您的偏好和网站的要求。如果你要支持非JavaScript用户,那么javascript方法可能不是最好的^^
Rant out
答案 4 :(得分:0)
您可以使用此扩展方法。
public static MvcHtmlString ActionLinkWithSelection(this HtmlHelper htmlHelper, string linkText, string actionName, string controllerName)
{
const string action = "action";
const string controller = "controller";
const string selected = "selected";
var routeValues = htmlHelper.ViewContext.RouteData.Values;
var linkMatchesRoute = routeValues.ContainsKey(action) && routeValues.ContainsKey(controller) &&
actionName.Equals(routeValues[action]) && controllerName.Equals(routeValues[controller]);
return htmlHelper.ActionLink(linkText, actionName, controllerName, null, linkMatchesRoute ? new { @class = selected } : null);
}