是否应该在操作中调用 PartialView() 使用布局?
这是我的行动:
public ActionResult SomeAction()
{
if (Request.IsAjaxRequest())
return PartialView();
else
return View();
}
这是我的 _ViewStart.cshtml:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
场景 #1:Action 调用未指定布局的视图。
@{
//Layout = "~/Views/Shared/_SomeLayout.cshtml";
}
<h2>View!</h2>
- 视图的结果:视图被包裹在一个布局中
- PartialView 的结果:视图未包装在布局中
Darin Dimitrov的回应支持了这一点。
场景 #2:Action 调用指定布局的视图。
@{
Layout = "~/Views/Shared/_SomeLayout.cshtml";
}
<h2>View!</h2>
- 视图的结果:视图被包裹在一个布局中
- PartialView 的结果:视图仍然包裹在布局中
Darin Dimitrov的其他回应似乎也支持了这一点。(注意:尽管他的回答是 AJAX 请求的全部内容,但这是对 OP 有两种观点的问题的回应,一种是完整的,一种是部分的。)
所以在第一个中,Darin 解释说如果你不想要布局,请使用 PartialView(),但在第二个中他说如果你不想要布局,那么这里有一个解决方法。
有人可以向我解释我是否缺少某些东西或为什么会这样。不管 Darin 怎么说,如果我只在 中设置布局_ViewStart.cshtml
,那么我可以用 PartialView() 忽略它,但是如果我在 View 本身中设置另一个布局,那么我不能忽略它。
这有意义吗?我应该能够忽略这两种布局吗?如果不是,为什么?