В приложении asp.net mvc я обычно решаю эту проблему, устанавливая идентификатор тега body, который содержит как имя контроллера, так и имя действия. Затем я использую css для стилизации ссылок по-разному в зависимости от идентификатора тега body.
Обычно я делаю это, создавая вспомогательное расширение html, которое получает строку id для тега body. Это может выглядеть примерно так:
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>
Затем я использую css для стилизации их по-разному, в зависимости от того, выбраны они или нет. Примерно так:
#home-index #home-index-link, #account-login #account-login-link {
/* Styles for selected links */
}
Конечно, это будет работать, если вы сделаете то же самое для тега <li />
вместо тега <a />
.
Если вы не хотите делать это таким образом, вы, конечно, можете просто использовать routedata (как я делаю в моем html помощнике здесь). Значение с ключом «action» будет содержать имя действия, а значение с ключом «controller» будет содержать имя контроллера.