Где должны быть подготовлены объекты без просмотра моделей для представления ASP.NET MVC

StackOverflow https://stackoverflow.com/questions/4273225

Вопрос

Мне нужен явный разум мышления Чтобы обеспечить некоторое хорошее предложение, как эта вещь должна быть сделана с лучшими.

Проблема

Я создаю ASP.NET MVC-приложение. Большинство моих представлений имеют панель инструментов на вершине. Панель инструментов может иметь несколько различных предметов на нем:

  • кнопки
  • Примечания
  • Промывные элементы (динамическое пространство ширины, которое используется для положения некоторых кнопок на дальнюю правую сторону панели инструментов)
  • и т.п.

Следовать Сухой принцип Я создал набор общих частичных взглядов (Toolbar, Toolbar.Button и т. д.) Это отобразит предварительно определенный объект панели инструментов. Эти частичные взгляды, конечно, сильно набираются.

Тогда у меня есть свои прочные виды типа, модели которых связаны с данными, которые они отображаются. Но у них довольно часто есть панель инструментов на них. Так до звонка Html.RenderPartial("Toolbar", toolbar) Я должен подготовить это IList<ToolbarItemBase> Список объектов, чтобы передать его ему.

Проблема в том, что я готовлю их в самом центре. Этот список объектов панели инструментов всегда одинаково для определенной страницы, а также локализован. Пункт кнопки панели инструментов также имеет Url Свойство, которое установлено с использованием URL.action () Помощник, что делает невозможным просто сохранять экземпляры для сериализованных панелей инструментов в базе данных. Дело в том, что эти определения панели инструментов могут получить действительно большие (подумайте о слов ленты и количество предметов в нем)

Вопрос

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

Это было полезно?

Решение

Я бы рассмотрел использование помощников действий / рендеринга в ASP.NET MVC 3.

В основном, помощник действий давайте создадим «дочерний запрос» к действию контроллера, который может построить модель и визуализацию частичного представления (и результаты частичного представления будут отображаться во внешнее представление, где вы используете @ html.action (. ..)).

Итак, в вашем сценарии у вас будет действие контроллера, посвященное созданию модели вида для панели инструментов, а также рендеринг панели инструментов частичной. Вызовите это действие, используя HTML.action из макета или представления контента, который нуждается в панели инструментов.

Надеюсь, это поможет,

Другие советы

Представьте базовую модель для всех видов с поддержкой панели инструментов и подготовьте там данные панели инструментов.

PS Я бы, наверное, понизился за это, но вы думаете, что обратно в WebForms вместо MVC? Если ваше намерение - это имитировать интерфейс приложений на рабочий стол со всей его функциональностью и сложностью, MVC может быть не правильным инструментом для вас. В двух словах MVC предназначен для веб-сайтов, WebForms предназначены для веб-приложений.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top