asp.net mvc
从我所理解存在很大差异Html.RenderPartial
包含在ASP.NET MVC的释放和HTML.RenderAction
在Microsoft.Web.Mvc.ViewExtensions
包含在MVC期货。
在我的应用程序中,我有许多由许多“窗口小部件”(各种)组成的页面,每个页面都有其特定的功能。
在我看来,使用RenderAction
方法更合理,因为每个小部件都有专门的控制器负责获取不同的数据并呈现专用的视图(与只有一个控制器和独特的视图模型传递给RenderPartial
助手以呈现视图相反) )。
从测试中我已经做了一个表单,指向一个控制器中的Create操作方法,如:
<% 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
助手的正确方法,在这种情况下使用它是否正确?
更新:实际上将_MessageForm的局部视图重命名为正确呈现窗体。
很老的一个,但它跳入我的未回答的问题列表:)
RenderAction
和RenderPartial
之间有很大的区别。 RenderPartial
将在同一个控制器(或共享控制器)上呈现View
,而RenderAction
实际上将执行整个MVC循环,即:它将实例化控制器(您提到的任何控制器,而不仅仅是当前控制器),它会执行该操作,然后它将返回并呈现结果。
RenderPartial
更类似于inclusion
,如果不指定不同的模型,它甚至会共享相同的模型。
RenderAction
要复杂得多(并且可能会有不希望的副作用,这就是为什么他们没有从版本1开始使用此功能 - 最初它是作为实验性功能提供的)。
所以,就你而言,如果你有小部件,可以同时使用它们。 这取决于小部件的复杂性。 如果你有一个必须从数据库中获取数据,做一些复杂的事情等......那么你应该使用RenderAction
。
我有一个新闻控制器负责新闻对象。 我创建了一个Block动作,它将渲染一个包含最新消息的块放入主页。 在我看来,这是RenderAction的一个完美例子。
使用MVC需要非常注意不要在脚下自己拍摄。 我的意思是说MVC产品的效率。 在复杂的项目中,我更喜欢使用RenderPartial而不是RenderAction。 我使用了RenderPartial,我使用jQuery.ajax请求(使用Html.Action)。 它肯定比RenderAction更有效。 通过这种方式,您可以将视图放入缓存中,然后调用jQuery.ajax。 尝试一下吧。 Ayende在冬眠犀牛清楚地解释它。
链接地址: http://www.djcxy.com/p/50937.html上一篇: asp.net mvc