Что эквивалентно ASCX-коду в MVC 3? - PullRequest
0 голосов
/ 27 июля 2011

Я никогда не создавал большой проект с использованием ASP.NET MVC 3, но я стараюсь быть правдивым, чтобы формировать и использовать фреймворк в том виде, как он был спроектирован, так что прежде чем я начну с ума от Html Helpers Мне было интересно, как лучше создать «пользовательские элементы управления» в MVC 3.

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

Два способа, которые я вижу для меня, когда я изолирую NavMenu от представления, - это создание либо частичного представления, либо Html Helper.

Частичное представление, кажется, является подходящим вариантом, поскольку у меня может быть несколько сотен таких маленьких компонентов. Однако предполагается, что частичное представление (в соответствии с моим пониманием) заботится только о уровне представления, а не о модели-логике. В то же время я не хочу, чтобы модель основного представления содержала 100 подмоделей для каждого частичного представления.

Должен ли я положить вещи в ViewBag? Должен ли я иметь базовый контроллер, который позаботится о заполнении ViewBag / ViewData всем необходимым для визуализации этого частичного представления? Или правильный способ - создать HtmlHelpers и использовать C # для генерации всего HTML?

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

Другими словами, что эквивалентно ASCX + Code-Behind в MVC 3?

1 Ответ

1 голос
/ 27 июля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...