Из того, что я понял, существует большая разница между 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 делает форму корректно.