Перед MVC я посмотрел путь к файлу и выяснил, какая вкладка была текущей. Теперь это намного проще, вы можете назначить текущую вкладку на основе текущего контроллера.
Проверьте это ...
Большая часть работы происходит в пользовательском контроле.
public partial class AdminNavigation : ViewUserControl
{
/// <summary>
/// This hold a collection of controllers and their respective "tabs." Each Tab should have at least one controller in the collection.
/// </summary>
private readonly IDictionary<Type, string> dict = new Dictionary<Type, string>();
public AdminNavigation()
{
dict.Add(typeof(BrandController), "catalog");
dict.Add(typeof(CatalogController), "catalog");
dict.Add(typeof(GroupController), "catalog");
dict.Add(typeof(ItemController), "catalog");
dict.Add(typeof(ConfigurationController), "configuration");
dict.Add(typeof(CustomerController), "customer");
dict.Add(typeof(DashboardController), "dashboard");
dict.Add(typeof(OrderController), "order");
dict.Add(typeof(WebsiteController), "website");
}
protected string SetClass(string linkToCheck)
{
Type controller = ViewContext.Controller.GetType();
// We need to determine if the linkToCheck is equal to the current controller using dict as a Map
string dictValue;
dict.TryGetValue(controller, out dictValue);
if (dictValue == linkToCheck)
{
return "current";
}
return "";
}
}
Затем в вашей .ascx части usercontol вызовите метод SetClass, чтобы проверить связь с dict. Вот так:
<li class="<%= SetClass("customer") %>"><%= Html.ActionLink<CustomerController>(c=>c.Index(),"Customers",new{@class="nav_customers"}) %></li>
Все, что вам сейчас нужно, это CSS, чтобы выделить вашу текущую вкладку. Существует множество способов сделать это, но вы можете начать с некоторых идей здесь: http://webdeveloper.econsultant.com/css-menus-navigation-tabs/
О, и не забудьте поместить пользовательский контроль на своей странице (или MasterPage) ...
<% Html.RenderPartial("AdminNavigation"); %>