ASP.NET MVC 3 - 自定义WebViewPage无法设置Layout属性

时间:2013-02-19 17:35:50

标签: c# asp.net-mvc asp.net-mvc-3

在开始之前,我确实发现了类似问题here,但我认为这不是同一个问题。

我已经创建了一个自定义WebViewPage<T>,并将其设置为web.config中我的视图的基页。这工作正常。我在课堂上添加了如下方法 -

public void SetLayout()
{
    if (!string.IsNullOrEmpty(HttpContext.Current.Request.QueryString["abc"]))
    {
        Layout = null;
    }
}

在实际使用案例中还有更多内容,但这是基本方法。它从View中调用,如果传递了查询字符串参数,则应该覆盖布局。

@{ SetLayout(); }

我遇到的问题是布局不会设置为null。当我逐步浏览Visual Studio中的代码时,我看到Layout设置为"~/Views/Shared/_Layout.cshtml"(来自_ViewStart.cshtml)。然后上面的代码运行,它应该设置为null。检查布局属性 - 在该行运行后立即 - 它仍然设置为完整字符串。在立即窗口中,我可以将其覆盖为null - 这是有效的 - 但是通过代码无效。

我尝试使用base.Layout等向类中添加一个额外的Layout覆盖。基类显示Layout只是一个属性,所以我不确定为什么设置它不会改变它的值。

1 个答案:

答案 0 :(得分:1)

我可能会遗漏一些东西,但你试过了吗?

@{ Layout = SetLayout(); }