Мне нужно немного ясного мышления , чтобы дать несколько хороших советов о том, как это нужно делать в лучшем виде.
Проблема
Я создаю приложение Asp.net MVC. Большинство моих просмотров имеют панель инструментов вверху. Панель инструментов может иметь несколько различных элементов, например:
- Кнопка
- примечания
- сбросить элементы (динамическое пространство ширины, которое используется для размещения некоторых кнопок в крайней правой части панели инструментов)
- и т.д.
Чтобы следовать принципу СУХОЙ Я создал набор общих частичных представлений (Toolbar
, Toolbar.Button
и т. Д.), Которые отображают предопределенный объект панели инструментов. Эти частичные представления, конечно, строго типизированы.
Тогда у меня есть строгие представления, модели которых связаны с отображаемыми данными. Но у них также часто есть панель инструментов. Поэтому перед вызовом Html.RenderPartial("Toolbar", toolbar)
я должен подготовить этот список объектов IList<ToolbarItemBase>
, чтобы передать его ему.
Проблема в том, что я готовлю это в самом представлении. Этот список объектов панели инструментов всегда одинаков для конкретной страницы и также локализован. Элемент кнопки панели инструментов также имеет свойство Url
, которое устанавливается с помощью помощника Url.Action () , что делает невозможным просто сохранить сериализованные экземпляры панели инструментов в базе данных. Дело в том, что эти определения панели инструментов могут стать очень большими (подумайте о ленте Word и количестве элементов в ней)
Вопрос
Что вы предлагаете, где я должен создавать свои локализованные экземпляры панели инструментов без загромождения кода представлений? Так как они вообще не меняются, они, скорее всего, могут быть статичными ...