использование ссылки html.action за пределами страницы просмотра в MVC3 - PullRequest
1 голос
/ 06 октября 2011

В моем первом проекте MVC мне нужно показать меню шагов для мастера. Проблема в том, что некоторые шаги зависят от данных, которые предоставляет пользователь. Например, если пользователь платит наличными, мы пропускаем страницу с информацией о банковском счете (и, таким образом, удаляем пункт меню).

У меня есть класс "page" в C # и класс "menu", который имеет список "страниц". Я собираюсь написать логику, которая определяет, показывать или нет пункт меню в классе меню.

Проблема заключается в следующем; Класс страницы - это очень простой класс, который выглядит следующим образом («активный» означает, что пункт меню выделен как активный элемент в данный момент):

public class Page
{
    MvcHtmlString Link { get; set; }
    bool Active { get; set; }
    bool Visible { get; set; }

    public Page(MvcHtmlString link)
    {
        Link = link;
        Active = false;
        Visible = true;
    }

    public Page(MvcHtmlString link, bool active, bool visible)
    {
        Link = link;
        Active = active;
        Visible = visible;
    }
}

В моей логике я хочу добавить страницы в список, и я хотел бы использовать свойство "Ссылка" страницы, чтобы сохранить целевой URL для каждого пункта меню. Таким образом, я могу заполнить это свойство, используя Html.Actionlink () и все его доступные параметры, чтобы сгенерировать HTML для ссылки. В возможном меню я могу просто повторить и показать элементы. Кроме того, у него есть то преимущество, что я могу сделать AJAX-вызов этой функции и получить обратно HTML-код, который я могу использовать на своей странице для динамического обновления меню.

Однако Html.ActionLink недоступен, и в других статьях Stackoverflow я обнаружил, что людям также не нравится использовать помощник html вне представления MVC по понятным причинам.

Итак, мой вопрос; Как бы я пошел об этом в чистом решении? Я решил предоставить классу страницы не свойство Link, а свойства «controller» и «action», но я бы упустил гибкость простого добавления класса или других атрибутов HTML, которые обеспечивает actionlink.

Спасибо

Эрик

...