在ASP.NET MVC中,有什么区别:
Html.Partial 和 Html.RenderPartialHtml.Action 和 Html.RenderAction根据我的理解Html.RenderPartial,ASP.NET MVC版本HTML.RenderAction中Microsoft.Web.Mvc.ViewExtensions包含的内容与MVC Futures中包含的内容之间存在很大差异.
在我的应用程序中,我有许多页面由许多"小部件"(类型)组成,每个小部件都有自己的特定功能.
在我看来,使用该RenderAction方法更合理,因为每个小部件都有一个专用控制器,负责获取不同的数据并呈现专用视图(而不是只有一个控制器和一个唯一的视图模型传递给RenderPartial帮助器来呈现视图).
从测试中我已经完成了一个指向控制器中的Create动作方法的表单,如:
<% using (Html.BeginForm("Create", "Message", FormMethod.Post,
new { id = "messageCreateForm" })) {%>
Run Code Online (Sandbox Code Playgroud)
并用它来调用它
<% Html.RenderPartial("MessageForm",new MessageDTO()); %>
Run Code Online (Sandbox Code Playgroud)
将正确呈现:
<form id="messageCreateForm" method="post" action="/Message/Create">
Run Code Online (Sandbox Code Playgroud)
但是使用相同的等价物RenderAction(因此MessageForm在控制器上使用动作方法来渲染视图)将无法正确渲染:
<% Html.RenderAction<MessageController>(m => m.MessageForm()); %>
Run Code Online (Sandbox Code Playgroud)
将呈现:
<form id="messageCreateForm" method="post" action="">
Run Code Online (Sandbox Code Playgroud)
请注意,该操作为空.
这是使用RenderAction帮助程序的正确方法吗?在这种情况下使用它是否正确?
更新:实际上将部分视图重命名为_MessageForm会正确地呈现表单.