1

在开始之前,我确实在这里找到了这个类似的问题,但我认为这不是完全相同的问题。

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

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

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

@{ SetLayout(); }

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

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

4

1 回答 1

1

我可能遗漏了一些东西,但是您是否尝试过:

@{ Layout = SetLayout(); }

于 2013-02-19T18:21:52.057 回答