MVC 3 Partial Page (Razor) 和 MVC 3 View Page with Layout (Razor) 的区别是什么?

8
在MVC 3 Beta中,“MVC 3 Partial Page(Razor)”和“MVC 3 View Page with Layout(Razor)”这两个模板有什么区别吗?
我在应用程序中添加了一个局部页面(_partialList)。现在,当我仅返回局部视图时,它会应用_ViewStart.cshtml中的布局 - 就像标准视图页面一样。
    if (Request.IsAjaxRequest())
        return View("_partialList", someModelData);

“部分”页面与带有布局的标准视图页面如何区分?在特定场景下,这两者会有不同的行为吗?

5个回答

10

如果你不想应用布局,可以返回一个PartialView而不是View:

if (Request.IsAjaxRequest())
    return PartialView("_partialList", someModelData);

但我仍然不确定为什么存在两个模板,当它们基本上做相同的事情(即具有布局的部分视图/页面)? - Preets

9

Darin的回答解决了您不想应用布局的实际问题。

关于两者之间的区别,在Razor中它们实际上是相同的,因为全页面和部分页面使用相同的扩展名并具有相同的基类。

之所以有不同的UI,是因为在Web Forms视图引擎中,两者使用不同的扩展名和不同的基类来实现,这就是为什么需要分开的模板。


我理解网页表单是其中的一部分,即页面和用户控件 - 两个不同的概念。但我担心我不太明白Web表单视图引擎对Razor的影响。 - Preets
@Preets WebForms视图引擎在运行时对Razor没有影响。然而,Visual Studio工具(添加视图对话框)支持两种视图引擎,因此需要Razor提供2个选项,尽管它们目前在功能上是等效的。 - marcind
@marcind - 感谢您的教程,我开始了解关于Nested Layouts with Sections的使用。我仍在尝试理解Redefining Sections与Partial Pages之间的区别。这个回答似乎意味着它们之间没有区别。基于我的第一个问题(https://stackoverflow.com/q/48027614/1735836)和第二个问题(https://stackoverflow.com/q/48082955/1735836),是否有最佳实践方法或者您能提供一些建议,以便在表格视图中添加新标签中的内容而不会破坏其他标签中的内容?感谢您提供的任何帮助。 - Patricia

3
将以下代码添加到您的页面中,视图引擎将不会对其应用布局。
@{
    Layout = null;
}

2

视图有这个:

@{
    View.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

而部分视图则没有。


0

我认为没有任何区别。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接