ASP.NET MVC версия Ruby on Rails "link_to_unless_current" - PullRequest
7 голосов
/ 17 января 2009

Я хочу включить ссылку в свой SiteMaster (используя Html.ActionLink), ЕСЛИ ПРОСМОТРЕТЬ представление, на которое я ссылаюсь, является текущим представлением. Например, нет смысла отображать ссылку «Зарегистрироваться», когда пользователь уже видит представление «Регистрация».

В Ruby on Rails я использую "ссылку _ на _, если _ current" метод для этого.

Как мне продублировать это поведение в ASP.NET MVC? Лучшее, что я могу придумать, - это установить логическое значение в моем контроллере, чтобы указать, что ссылка должна быть скрыта (поскольку она является текущей). Это кажется очень неудобным по сравнению с подходом Rails, поэтому я думаю, что я что-то упустил.

1 Ответ

10 голосов
/ 17 января 2009

Мне не известен такой вспомогательный метод в ASP.NET MVC, но его довольно легко свернуть:

public static class HtmlExtensions
{
    public static string ActionLinkUnlessCurrent(this HtmlHelper htmlHelper, string linkText, string actionName)
    {
        string currentAction = htmlHelper.ViewContext.RouteData.Values["action"].ToString();
        if (actionName != currentAction)
        {
            return htmlHelper.ActionLink(linkText, actionName);
        }
        return linkText;
    }
}

А затем используйте это так:

<%= Html.ActionLinkUnlessCurrent("Link Text", "Index") %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...