Многоразовая форма ASP.Net MVC как RenderAction или RenderPartial - PullRequest
3 голосов
/ 21 августа 2010

Я ищу лучшую практику для встраивания формы на нескольких страницах в виде частичного представления.

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

Как я могу создать форму многократного использования в частичном представлении и внедрить ее на страницу?Я использую N2 на сайте, поэтому на страницах уже должна быть строго типизированная модель, но я был бы открыт для расширения этих объектов.

Ответы [ 2 ]

4 голосов
/ 21 августа 2010

Лично я рекомендую использовать для Html.RenderAction () для сквозных задач, таких как эти.

Требуется, чтобы обработчик вашей контактной формы существовал независимо от страницы, которую вы сейчас просматриваете, поэтому у вас остается 3 варианта:

  1. Вручную добавьте его в ответтекущее действие
  2. Вручную добавьте его в ответ текущего контроллера с помощью базового контроллера, который изменяет ViewState или ViewModel
  3. . Вызовите метод RenderAction () HtmlHelper внутри текущего представления * 1010.*

Из этих трех вариантов, хотя третий технически более дорог, чем 1 и 2 (поскольку он инициирует новый запрос), он также является наиболее приемлемым решением.Вызывая RenderAction (), вы получаете возможность полностью изолировать вашу контактную форму от остальной части представления, и, таким образом, вам не придется беспокоиться о том, чтобы взломать ее в ответах текущего контроллера.

0 голосов
/ 21 августа 2010

Используйте RenderPartial, если модель данных для частичного представления уже находится в модели основного вида, в противном случае используйте RenderAction (тогда действие частичного представления создаст его модель представления непосредственно).

...