Lia*_*iam 4 asp.net asp.net-mvc partial-views razor asp.net-mvc-3
所以有人问我这个问题:
我何时会返回View()以及何时返回PartialView()?
我的不懈反应是,如果它是一个空间使用PartialView()
.然后我意识到我经常返回View()
部分视图,没有明显的,有效的影响?!那么return PartialView()
电话中有什么意义呢?
我发现这个问题"return View()"和"return PartialView()"之间有什么区别.这似乎是MVC2特有的.即谈论.aspx
和.ascx
控制扩展.使用Razor我们所有的观点都是.cshtml
它们是否是部分的.
这让我的想法PartialView()
只是来自MVC2的宿醉并且与MVC3 +无关(无论如何使用Razor)?或者我错过了一些关键特征PartialView()
?
tl; dr: PartialView()
不对返回的视图使用布局.
您可以在_ViewStart.cshtml
(位于Views
文件夹中)设置默认布局文件,然后由所有视图使用.通过这样做,您可以避免Layout
在每个视图中设置属性.PartialView()
将不包括该布局文件或任何其他.
如果要返回部分视图,例如在名为using的子操作中@Html.Action(action, controller)
,请使用PartialView
.如果要返回包含布局的"完整"视图,请使用View()
.
MSDN参考:
如果您将ViewResult()对象的MSDN定义与PartialViewResult()对象的MSDN定义进行对比
你发现唯一的区别是ViewResult有一个额外的属性:
public string MasterName { get; set; }
Run Code Online (Sandbox Code Playgroud)
否则,两个对象都从ViewResultBase继承,并且似乎从基类继承所有其他属性和方法.
不幸的是,抽象方法ExecuteResult()的实现没有发布,但我毫不怀疑它使用该MasterName
字段来查找和渲染主层.
我们的共同经历:
就像你一样,我已经使用View()返回了部分视图=.我不推荐它.但明显的差异并不大.
为MasterName设置一个额外的对象似乎有点浪费,但更重要的区别可能是实现ExecuteResult()
.
当您选择View()
方法并创建一个ViewResult
Object而不是使用PartialView()来创建PartialViewResult对象时,您的效率会降低; 您的应用程序正在执行检查您的MasterName
字段是否已分配的额外工作.
归档时间: |
|
查看次数: |
1680 次 |
最近记录: |