Возвращая false, вы отменяете действие ссылки по умолчанию, которое заключается в отправке запроса вашему действию контроллера.Поэтому, если вы сделаете это, вам нужно будет вручную отправить запрос (AJAX?) И использовать результаты этого запроса для изменения DOM.Например:
$('.test').click(function () {
$('.test').removeClass('selected');
$(this).addClass('selected');
$.ajax({
url: this.href,
success: function(result) {
// TODO: do something with the result here
}
});
return false;
});
Или вы можете сделать это без JavaScript.
Так, например, вы можете написать пользовательский помощник HTML , который будет генерировать это меню:
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);
}
, а затем просто:
<ul>
<li>@Html.MenuLink("Overview", "Index", "Statistics")</li>
<li>@Html.MenuLink("Detail View", "Detail", "Statistics")</li>
<li>@Html.MenuLink("Trends", "Trends", "Statistics")</li>
</ul>