Por lo que he entendido, hay una gran diferencia entre el Html.RenderPartial
incluido en el lanzamiento ASP.NET MVC y el HTML.RenderAction
en el Microsoft.Web.Mvc.ViewExtensions
incluido en MVC Futures.RenderAction RenderPartial
En mi aplicación tengo muchas páginas compuestas de muchos "widgets" (más o menos) que tienen su propia función específica.
Me pareció más razonable usar el método RenderAction
ya que cada widget tendría un controlador dedicado para obtener datos diferentes y representar una vista dedicada (en lugar de tener un solo controlador y un modelo de vista único para pasar al RenderPartial
ayudante para renderizar vistas).
De las pruebas que he hecho con una forma que apunta a un método Create acción en un controlador como:
<% using (Html.BeginForm("Create", "Message", FormMethod.Post,
new { id = "messageCreateForm" })) {%>
y llamándolo con
<% Html.RenderPartial("MessageForm",new MessageDTO()); %>
hará que correcly a:
<form id="messageCreateForm" method="post" action="/Message/Create">
pero con el mismo equivalente con RenderAction
(entonces usando un MessageForm
método de acción en el controlador para renderizar la vista) no haría correcly manera:
<% Html.RenderAction<MessageController>(m => m.MessageForm()); %>
rendirá en:
<form id="messageCreateForm" method="post" action="">
Tenga en cuenta que la acción está vacía.
¿Es esta la manera correcta de usar el ayudante RenderAction
y es correcto usarlo en casos como ese?
ACTUALIZACIÓN: En realidad, el cambio de nombre de la vista parcial a _MessageForm representa el formulario de forma correcta.
Creé una publicación sobre este tema aquí http://prideparrot.com/blog/archive/2012/10/renderpartial_vs__renderaction. Ayudará a alguien a visitar este hilo – VJAI