Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC 3-自定义WebViewPage可以';设置布局属性_C#_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

C# ASP.NET MVC 3-自定义WebViewPage可以';设置布局属性

C# ASP.NET MVC 3-自定义WebViewPage可以';设置布局属性,c#,asp.net-mvc,asp.net-mvc-3,C#,Asp.net Mvc,Asp.net Mvc 3,在我开始之前,我确实发现了类似的问题,但我不认为这是完全相同的问题 我已经创建了一个自定义的WebViewPage,并将其设置为web.config中视图的基本页面。这很好用。我在类中添加了如下方法- public void SetLayout() { if (!string.IsNullOrEmpty(HttpContext.Current.Request.QueryString["abc"])) { Layout = null; } } 在实际用例中

在我开始之前,我确实发现了类似的问题,但我不认为这是完全相同的问题

我已经创建了一个自定义的
WebViewPage
,并将其设置为web.config中视图的基本页面。这很好用。我在类中添加了如下方法-

public void SetLayout()
{
    if (!string.IsNullOrEmpty(HttpContext.Current.Request.QueryString["abc"]))
    {
        Layout = null;
    }
}
在实际用例中有更多的内容,但这是基本方法。它从视图中调用,如果传递了查询字符串参数,则应该覆盖布局

@{ SetLayout(); }
我遇到的问题是布局没有设置为null。当我在Visual Studio中逐步浏览代码时,我看到布局设置为
“~/Views/Shared/_Layout.cshtml”
(从
\u ViewStart.cshtml
)。然后运行上面的代码,并将其设置为null。检查布局属性-在该行运行后立即-它仍然设置为完整字符串。在即时窗口中,我可以将其覆盖为null——这是可行的——但通过代码无效


我已尝试使用base.Layout等向类添加其他布局替代。基类显示布局只是一个属性,因此我不确定为什么设置它不会更改其值。

我可能缺少一些内容,但您尝试过:


@{Layout=SetLayout();}

我可能遗漏了什么,但您是否尝试过:


@{Layout=SetLayout();}

是-使用返回字符串的方法-但随后我将无法使用_ViewStart.cshtml中的默认布局值。我对解决方案的兴趣不如说是为什么.NET不允许我写cookie-cuter属性。如果它至少抛出一个错误就好了。从它的角度来看,没有错误可以让你意识到。设置为null的布局与页面的当前布局无关。视图代码以这种方式与模型代码隔离。通过调用SetLayout(),您设置的布局属性与您认为的完全不同。我不确定您的意思,也不确定模型是如何考虑这一点的。我可以在这个类中沿着Layout属性创建另一个属性,它将成为view-ie.@{SomeProperty=1;}的一部分。这是一个我不理解的继承问题吗?我想是的,但我不知道如何解释它。下面是如何看待它的实际应用。如果将{SetLayout();}代码更改为{SetLayout();Layout=“”;},则SetLayout()不会更改Layout试图设置的内容。是的,使用返回字符串的方法,但我将无法使用_ViewStart.cshtml中的默认值Layout。我对解决方案的兴趣不如说是为什么.NET不允许我写cookie-cuter属性。如果它至少抛出一个错误就好了。从它的角度来看,没有错误可以让你意识到。设置为null的布局与页面的当前布局无关。视图代码以这种方式与模型代码隔离。通过调用SetLayout(),您设置的布局属性与您认为的完全不同。我不确定您的意思,也不确定模型是如何考虑这一点的。我可以在这个类中沿着Layout属性创建另一个属性,它将成为view-ie.@{SomeProperty=1;}的一部分。这是一个我不理解的继承问题吗?我想是的,但我不知道如何解释它。下面是如何看待它的实际应用。如果将{SetLayout();}代码更改为{SetLayout();Layout=”“;},则SetLayout()不会更改Layout试图设置的内容。