Какой самый простой способ изменить изображение выбранной вкладки в ASP.NET MVC? - PullRequest
0 голосов
/ 12 июня 2009

Я видел этот вопрос, Простой способ установить активную вкладку , однако я не уверен, что это оптимальное решение.

Я смотрю, как другие обрабатывают выбор вкладок в своих представлениях / контроллерах в ASP.NET MVC.

Какой самый простой способ реализации выбираемых вкладок в ASP.NET MVC? Я хотел бы избежать использования методов javascript, позволяющих браузерам, не поддерживающим js, по-прежнему видеть выбранную вкладку.

Ответы [ 2 ]

0 голосов
/ 12 июня 2009

Я делаю что-то похожее на упрощенный пример; -)

Контроллер:

public ActionResult Index()
{
    ViewData["MainMenuOn"] = "Home";
    return View();
}

public ActionResult About()
{
    ViewData["MainMenuOn"] = "About";
    return View();
}

public ActionResult Contact()
{
    ViewData["MainMenuOn"] = "Contact";
    return View();
}

Вид:

<ul id="main-menu">
    <li class="<%= Html.MainMenuOn("Home") %>">... action link for home action ...</li>
    <li class="<%= Html.MainMenuOn("About") %>">... action link for about action ...</li>
    <li class="<%= Html.MainMenuOn("Contact") %>">... action link for contact action ...</li>
</ul>

Расширение хелпера:

public static string MainMenuOn(this HtmlHelper html, string menuItem)
{
    if ((html.ViewData["MainMenuOn"] != null) && (html.ViewData["MainMenuOn"] == menuItem))
        return "on";

    return "";
}

Тогда ваш CSS должен быть довольно простым

ul#main-menu li
{
    background: green;
}

ul#main-menu li.on
{
    background: blue;
}

Есть много способов обшить эту кошку ... в зависимости от ваших потребностей, я бы начал искать разные способы реализации расширения HtmlHelper.

HTHS, Charles

0 голосов
/ 12 июня 2009

РЕДАКТИРОВАТЬ: Вычеркните это выше, это не то, что я сделал, это была нерабочая комбинация двух методов, которые я использовал.

Мне приходилось обрабатывать состояния в двух разных местах на одной странице. Первым способом я просто добавил CSS в представление, чтобы изменить вкладку на правильный стиль. Второе, что мне нужно было сделать, - это использовать ViewData, чтобы дать мне переменную, которую я передал помощнику, которого я написал, чтобы вывести CSS в разделе заголовка представления, чтобы указать специфичное для страницы состояние (если оно имеет смысл, категория будет выделена на странице товаров).

Итак, на мой взгляд, у меня есть две строки:

<% var onState = ViewData["OnState"].ToString(); %>
<%= Html.OutputOnState(onState) %>

Это очень хорошо выполняет то, что мне нужно. CSS жестко запрограммирован в помощнике, так как это небольшой сайт, поэтому я уверен, что есть лучший способ сделать это.

...