Я бы сказал, что такая логика лучше изолирована в контроллере. Попробуйте создать легкий класс для представления пунктов меню, например:
public class MenuLinkItem {
public string Text { get; set; }
public bool Highlight { get; set; }
}
Затем в вашем методе контроллера создайте их список, установите класс CSS для выделенного элемента и передайте результат в представление через ViewData:
public class MyController : Controller {
private MenuLinkItem MakeMenuLinkItem(string text, string urlFragment) {
return (new MenuLinkItem() {
Text = text,
Highlight = (this.Context.Request.RawUrl.Contains(urlFragment))
}
}
private IList<MenuLinkItem> GetMenuLinkItems() {
var items = new List<MenuLinkItem>();
items.Add(MakeMenuLinkItem("Something 1", something1var));
items.Add(MakeMenuLinkItem("Something 2", something2var));
items.Add(MakeMenuLinkItem("Something 3", something3var));
items.Add(MakeMenuLinkItem("Something 4", something4var));
items.Add(MakeMenuLinkItem("Something 5", something5var));
return(items);
}
public ActionResult Index() {
ViewData["menuLinkItems"] = GetMenuLinkItems();
/* other controller logic here */
return(View());
}
}
Затем в вашем реальном коде представления вы отображаете свое меню следующим образом:
<ul>
<% foreach(var item in (IList<LinkMenuItem>)ViewData["menuLinkItems"])) { %>
<li <%= item.Highlight ? "class=\"highlight\"" : ""%>><%=item.Text%></li>
<% } %>
</ul>
Контроллер принимает решения о том, какие ссылки выделены, а представление преобразует эти решения в представление HTML / CSS, которое имеет смысл для ваших пользователей.