Из того, что я понял, существует большая разница между Html.RenderPartial
, включенным в выпуск ASP.NET MVC, и HTML.RenderAction
в Microsoft.Web.Mvc.ViewExtensions
, включенном в MVC Futures.
В моем приложении у меня много страниц, состоящих из многих "виджетов" (вроде), каждый из которых имеет свою собственную определенную функцию.
Мне показалось разумнее использовать метод RenderAction
, так как каждый виджет будет иметь выделенный контроллер, ответственный за получение разных данных и предоставление выделенного представления (в отличие от того, чтобы иметь только один контроллер и уникальную модель представления RenderPartial
помощник для визуализации представлений).
Из тестов, которые я сделал, имеет форму, которая указывает на метод Create action в контроллере, например:
<% using (Html.BeginForm("Create", "Message", FormMethod.Post,
new { id = "messageCreateForm" })) {%>
и называя его
<% Html.RenderPartial("MessageForm",new MessageDTO()); %>
будет выглядеть корректно a:
<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 делает форму корректно.