В моем первом проекте 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.
Спасибо
Эрик