Немного неясно для меня на том, когда использовать пользовательский вспомогательный метод и когда использовать RenderAction и также когда просто использовать ViewData вместо этого. Некоторые их функции накладываются немного.
Например, если бы я должен был создать панель навигации Категории, то я создал бы новый вспомогательный метод и место это в некотором частичном представлении? Я имел первоначально, хотя из выполнения этого, но я читал на некотором блоге для использования RenderAction вместо этого. Я просто думал назад и вперед и мог использовать некоторую справку не только с этим примером, но и в целом.
Предположите, что список категорий прибывает из некоторого источника данных.
Общие рекомендации, которым я следую:
Методы HtmlHelper:
Частичный рендеринг:
Действие рендеринга:
ViewData:
Я буду использовать ViewData для отслеживания глобальных данных, которые применяются ко всем представлениям, таким как текущий пользователь. Если мне нужен последовательный способ отображения этих данных, я обычно создаю для него партиал, а затем выполняю RenderPartial () на главной странице.
Я новичок в использовании RenderAction
, но когда мне нужно загрузить данные для определенной части дисплея, я теперь использую RenderAction
. Идеально подходит для загрузки облака тегов, которые отображаются на каждая страница, но данные не относятся к конкретной странице.
Я бы выбрал вспомогательные методы html, если сценарий соответствует следующим критериям:
Если вспомогательный метод html использует данные модели или у него много зависимостей, его, вероятно, лучше использовать как RenderPartial или RenderAction.
Во-первых, это, вероятно, ясно, но давайте скажем: Бизнес-логика категории (например, получение данных из источника данных) не должна находиться в Html-хелпере или в пользовательском контроле: это должно быть сделано в контроллере.
Разница между 1) RenderPartial / HtmlHelper и 2) RenderAction в том, в каком контроллере находится эта бизнес-логика:
Если вы используете данные категории практически на каждой странице, я не вижу ничего плохого в том, чтобы получать их для каждой страницы на уровне действий контроллера и передавать их в данные представления. Конечно, вы будете использовать какой-то механизм (пользовательский базовый класс модели, расширение контроллера, ...), чтобы у вас не было одного и того же вызова функции выборки категорий в каждом действии (предполагается, что у вас их много).
Если некоторые представления страницы решают показывать категории, некоторые нет, а некоторые, возможно, имеют другой элемент управления категориями с другой бизнес-логикой, то RenderAction определенно лучше. Даже в вышеописанном случае RenderAction хорош: он отделяет выборку категорий от других данных в действиях вашего контроллера.
Затем, что лучше использовать: RenderPartial или HtmlHelper... На мой взгляд, HtmlHelpers должны быть более общими и не специфичными для конкретного представления или модели, но это, я полагаю, скорее дело вкуса, чем четкое правило с точки зрения MVC: оба должны быть просто View-логикой.