Из того, что я понял, есть большая разница между Html.RenderPartial
, включенным в релиз ASP.NET MVC, и HTML.RenderAction
в Microsoft.Web.Mvc.ViewExtensions
, включенным в MVC Futures.
В моем приложении много страниц, составленных из множества "виджетов" (вроде), каждый из которых имеет свою особую функцию.
Мне показалось более разумным использовать метод RenderAction
, поскольку каждый виджет имел бы выделенный контроллер, отвечающий за получение различных данных и отображение выделенного представления (в отличие от наличия только одного контроллера и уникальной модели представления для передачи на RenderPartial
помощник для рендеринга просмотров).
Из проведенных мною тестов была форма, указывающая на метод действия Create в контроллере, например:
<% using (Html.BeginForm("Create", "Message", FormMethod.Post,
new { id = "messageCreateForm" })) {%>
и вызов его с помощью
<% Html.RenderPartial("MessageForm",new MessageDTO()); %>
отобразит правильно:
<form id="messageCreateForm" method="post" action="/Message/Create">
, но с тем же эквивалентом, что и RenderAction
(поэтому использование метода действия MessageForm
на контроллере для визуализации представления) не будет корректно отображаться так:
<% Html.RenderAction<MessageController>(m => m.MessageForm()); %>
будет отображаться в:
<form id="messageCreateForm" method="post" action="">
Обратите внимание, что действие пустое.
Это правильный способ использовать помощник RenderAction
и правильно ли его использовать в подобных случаях?
UPDATE:
Фактически переименование частичного представления в _MessageForm отображает форму правильно.