De ce que j'ai compris qu'il y a une grande différence entre l' Html.RenderPartial
inclus dans le ASP.NET MVC libération et l' HTML.RenderAction
dans la Microsoft.Web.Mvc.ViewExtensions
inclus dans MVC Futures.
Sur ma demande, j'ai beaucoup de pages composé de beaucoup de "widgets" (sorte de), chacun ayant sa propre fonction spécifique.
Il m'a semblé plus raisonnable d'utiliser l' RenderAction
méthode comme chaque widget aurait un contrôleur dédié responsable de l'obtention de données différentes et de rendu dédié vue (par opposition à un seul contrôleur et une vue unique sur le modèle de passer à l' RenderPartial
de l'aide pour rendre les points de vue).
Des tests que j'ai fait d'avoir un formulaire qui pointe à Créer une méthode d'action dans un contrôleur comme:
<% using (Html.BeginForm("Create", "Message", FormMethod.Post,
new { id = "messageCreateForm" })) {%>
et de l'appeler avec
<% Html.RenderPartial("MessageForm",new MessageDTO()); %>
rendra correcly un:
<form id="messageCreateForm" method="post" action="/Message/Create">
mais avec le même équivalent à RenderAction
(donc à l'aide d'un MessageForm
méthode d'action sur le contrôleur de rendre la vue) ne rendrait pas correcly donc:
<% Html.RenderAction<MessageController>(m => m.MessageForm()); %>
sera de:
<form id="messageCreateForm" method="post" action="">
Notez que l'action est vide.
Est-ce la bonne manière d'utiliser l' RenderAction
helper et est-il correct de l'utiliser dans de tels cas?
Mise à JOUR: En fait de renommer la vue partielle de _MessageForm rend le formulaire correcly.