确定视图是否被渲染为部分

问题描述 投票:0回答:4

有没有办法确定视图是否渲染为部分视图?

我希望通过捕捉这个来扩展我正在编写的部分的重用...并在必要时为视图分配适当的布局。

目前我只是在 div 中渲染它,但我也可以看到我们将它用作模式,并且可能它是自己的页面。

(模式不需要任何更改,所以不用担心)

编辑: 为了澄清我的问题。

我想知道是否有办法确定正在渲染的视图之间的差异...

/path/to/controller

Html.Partial("/path/to/view.cshtml")

c# asp.net-mvc-3 razor partial-views
4个回答
7
投票

为什么不使用@if(Layout==null)? 尽管如此,我还是会推荐“自己的”页面的另一个视图并在那里设置布局。


1
投票

在您看来(假设 Razor 语法):

@if(typeof(this) == Controller.PartialView)) //code

@if(this is Controller.PartialView) //code

1
投票

根据@Pheonixblade9 的回应以及缺乏其他答案,目前看来这是不可能的。 我最终只是将视图的

Model
绑定为
bool
并在渲染视图/部分时传递此值。


0
投票

您可以利用以下事实:

_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

© www.soinside.com 2019 - 2024. All rights reserved.