有没有办法确定视图是否渲染为部分视图?
我希望通过捕捉这个来扩展我正在编写的部分的重用...并在必要时为视图分配适当的布局。
目前我只是在 div 中渲染它,但我也可以看到我们将它用作模式,并且可能它是自己的页面。
(模式不需要任何更改,所以不用担心)
编辑: 为了澄清我的问题。
我想知道是否有办法确定正在渲染的视图之间的差异...
/path/to/controller
和
Html.Partial("/path/to/view.cshtml")
为什么不使用@if(Layout==null)? 尽管如此,我还是会推荐“自己的”页面的另一个视图并在那里设置布局。
在您看来(假设 Razor 语法):
@if(typeof(this) == Controller.PartialView)) //code
或
@if(this is Controller.PartialView) //code
根据@Pheonixblade9 的回应以及缺乏其他答案,目前看来这是不可能的。 我最终只是将视图的
Model
绑定为 bool
并在渲染视图/部分时传递此值。
您可以利用以下事实:
_ViewStart.cshtml
中的代码仅在渲染完整视图时运行,因此例如如果你添加
@{
ViewBag.IsFullPage = true;
}
进入
_ViewStart.cshtml
文件,然后您可以在您的部分中检查它,例如
@if (ViewBag.IsFullPage != true)
{
// do something only when rendered on its own
}
因此,如果您从控制器端点返回
PartialView
,则 ViewBag.IsFullPage
将是 false
,但如果您使用 Html.Partial
作为完整视图的一部分渲染部分,则它将是 true
。