Применение стилей программно в ASP.NET MVC MasterPage View - PullRequest
2 голосов
/ 26 ноября 2010

Каков наилучший / наиболее подходящий способ достижения следующих целей в моем веб-приложении MVC?

У меня есть представление с именем Site.Master (это мое представление MasterPage), а также в верхней части этого представления., У меня есть 5 ссылок, которые служат для навигации по моему основному сайту, например,

<ul>
    <li><a href="">Home</a></li>
    <li><a href="">Links</a></li>
    <li><a href="">Contact Us</a></li>
    ...etc
</ul>

. Я хочу, чтобы была возможность выделить соответствующую текстовую ссылку в соответствии с тем, какую часть сайта просматривает пользователь в данный момент.поэтому, если бы они использовали страницу «Связаться с нами», к ссылке «Контакты» в представлении главной страницы применялся другой стиль CSS.

В веб-формах каждая из моих ссылок представляла собой элемент управления HyperLink,и у меня есть свойство в коде за MasterPage, поэтому назначьте соответствующий CssStyle для каждого элемента управления HyperLink.

Каков наилучший способ добиться того же в моем представлении MasterPage, теперь я использую MVC

1 Ответ

4 голосов
/ 26 ноября 2010

Я бы, вероятно, написал помощник html, который сгенерирует эти ссылки в меню и на основе текущего контроллера, а действие применит класс привязки current к якору:

public static MvcHtmlString MenuLink(
    this HtmlHelper htmlHelper, 
    string linkText, 
    string actionName, 
    string controllerName
)
{
    string currentAction = htmlHelper.ViewContext.RouteData.GetRequiredString("action");
    string currentController = htmlHelper.ViewContext.RouteData.GetRequiredString("controller");
    if (actionName == currentAction && controllerName == currentController)
    {
        return htmlHelper.ActionLink(
            linkText,
            actionName,
            controllerName,
            null,
            new {
                @class = "current"
            });
    }
    return htmlHelper.ActionLink(linkText, actionName, controllerName);
}

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

<ul>
  <li><%= Html.MenuLink("Home", "Index", "Home") %></li>
  <li><%= Html.MenuLink("Links", "Links", "Home") %></li>
  <li><%= Html.MenuLink("Contact us", "Contact", "Home") %></li>
</ul> 

Тогда все, что осталось, это определить этот current класс в файле CSS для выделения:

.current {
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...