【发布时间】:2009-04-05 14:43:44
【问题描述】:
据我了解,ASP.NET MVC 版本中包含的 Html.RenderPartial 与 MVC Futures 中 Microsoft.Web.Mvc.ViewExtensions 中的 HTML.RenderAction 之间存在很大差异。
在我的应用程序中,我有许多由许多“小部件”(有点)组成的页面,每个页面都有自己的特定功能。
在我看来,使用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="">
注意action是空的。
这是使用 RenderAction 助手的正确方法吗?在这种情况下使用它是否正确?
更新: 实际上,将部分视图重命名为 _MessageForm 会正确呈现表单。
【问题讨论】:
-
我在prideparrot.com/blog/archive/2012/10/… 上创建了一个关于这个主题的帖子。将帮助访问此线程的人
标签: asp.net-mvc