Определение имени текущего представления в частичном представлении в ASP.NET MVC - PullRequest
4 голосов
/ 17 июля 2009

У меня есть частичное представление в моем тестовом приложении ASP.NET MVC. Это представление отвечает за отображение кнопок меню приложения.

Я хочу изменить цвет кнопки на текущей активной странице. В настоящее время я написал что-то вроде:

<ul id="menu">
    <% var activeClass = (string)(ViewData["currentPage"]) == "Home" ? "activeMenuButton" : ""; %>    
    <li><%= Html.ActionLink ("Home", "Index", "Home", new { @class = activeClass })%></li>

    <% activeClass = (string)(ViewData["currentPage"]) == "About" ? "activeMenuButton" : ""; %>    
    <li><%= Html.ActionLink ("About", "About", "Home", new { @class = activeClass })%></li>
</ul>

И установить представление данных в действиях контроллера:

//in home action
ViewData["currentPage"] = "Home";

//in About action
ViewData["currentPage"] = "About";

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

1 Ответ

7 голосов
/ 17 июля 2009

Я думаю, вам не нужны ViewData ["currentPage"]. Используйте ViewContext.RouteData.Values вместо:

Попробуйте это:

<ul id="menu">
    <% var activeClass = (ViewContext.RouteData.Values["Controller"] == "Home"
        && ViewContext.RouteData.Values["Action"] == "Home") ? "activeMenuButton" : ""; %>

    <li><%= Html.ActionLink ("Home", "Index", "Home", new { @class = activeClass })%></li>

    <% activeClass = (ViewContext.RouteData.Values["Controller"] == "Home"
        && ViewContext.RouteData.Values["Action"] == "About") ? "activeMenuButton" : ""; %>

    <li><%= Html.ActionLink ("About", "About", "Home", new { @class = activeClass })%></li>
</ul>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...