Где должны быть подготовлены объекты без просмотра моделей для представления ASP.NET MVC
-
28-09-2019 - |
Вопрос
Мне нужен явный разум мышления Чтобы обеспечить некоторое хорошее предложение, как эта вещь должна быть сделана с лучшими.
Проблема
Я создаю 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 предназначены для веб-приложений.