Mvc3 реализует ссылку для пользовательских действий - PullRequest
0 голосов
/ 29 января 2012

У меня есть сайт .net mvc3. И я должен реализовать верхнее меню. Каждый из тегов меню ведет к его действию и отображает другой вид. Вот что у меня сейчас:

<ul id="menu">
        <li>@Html.ActionLink("Home", "Index", "Home")</li>
        <li>@Html.ActionLink("Products", "Products", "Home")</li>
        <li>@Html.ActionLink("Pricing", "Pricing", "Home")</li>
        <li>@Html.ActionLink("Our Team", "OurTeam", "Home")</li>
        <li>@Html.ActionLink("Contact Us", "ContactUs", "Home")</li>
</ul><!-- /menu -->

В моем макете это Html.RenderAction("Header", "Home"); (потому что оно должно отображаться на всех страницах) Мне нужно реализовать Custom ActionLink. Текст привязки должен быть:

<span>text</span><b>text</b>

«Текст» - это Дом (например, первый ли) И текущий ActionLink должен добавить класс: «Selected» к якору.

Как я могу это сделать? Помогите пожалуйста

p.s Я могу добавить это меню для каждого представления на моем веб-сайте с помощью «выбранного» класса текущего представления, но это не очень хорошее решение.

Ответы [ 2 ]

1 голос
/ 29 января 2012

Если я правильно понимаю, вы хотите поместить выбранный класс в текущее действие отображения. Вы можете сделать проверку в виде, посмотрев на это:

HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString()
HttpContext.Current.Request.RequestContext.RouteData.Values["action"].ToString()

Затем вы добавляете «выбранный» класс к вашей ссылке, как показано в предыдущем ответе

<li>@Html.ActionLink("Home", "Index", "Home", null, new {@class = ":selected"})</li>

Лично я создам ViewModel, содержащий список «MenuAction», который предоставляет, кроме значений маршрута, свойство bool «Selected». Имо с точки зрения будет гораздо более чистой обработки данных.

0 голосов
/ 29 января 2012

Вы можете добавить class с этой ActionLink перегрузкой:

<li>@Html.ActionLink("Home", "Index", "Home", null, new {@class = ":selected"})</li>

Пятый параметр - это атрибуты HTML.

MSDN ActionLink этой перегрузки


Обновление:

$(function(){
    var controllerName ='ViewContext.RouteData.Values["Controller"]';
    $('#' +controllerName).addClass(':selected');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...