Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.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# 是否可以选择剃须刀部分?_C#_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# 是否可以选择剃须刀部分?

C# 是否可以选择剃须刀部分?,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,如果我有一个包含以下内容的页面: <body> @section SomeStuff { <span>This is a section I just addered</span> } </body> @部分内容{ 这是我刚才补充的部分 } 布局是否可能不呈现此部分,或者与此概念上的工作方式相反。看起来,能够不呈现页面上的某些部分会很有用(除非我没有正确地考虑这一点) 编辑: 包含错误消息可能会有所帮助,当我

如果我有一个包含以下内容的页面:

<body>
    @section SomeStuff {
        <span>This is a section I just addered</span>
    }

</body>

@部分内容{
这是我刚才补充的部分
}
布局是否可能不呈现此部分,或者与此概念上的工作方式相反。看起来,能够不呈现页面上的某些部分会很有用(除非我没有正确地考虑这一点)

编辑:

包含错误消息可能会有所帮助,当我将一个部分放入主页时,布局页面会失败:
以下部分已经定义,但尚未为布局页面/Views/Layouts/\u Layout1.cshtml呈现:““something”。
好像这迫使我呈现页面上的每个部分或其他内容

换句话说,在Layout.cshtml中,我不调用@RenderSection,但在Index.html中,我定义了一个名为
something
的部分。这合法吗?似乎这迫使我呈现页面中的所有部分,但似乎部分应该是可选的,否?

您可以执行以下操作:

  @if (condition) {
     @RenderSection("SomeStuff")
  }
或者直接使用
条件语句,而不是
@RenderSection

 @if (yourCondition) {
    <span>This is a section I just addered</span>
 }
@if(你的条件){
这是我刚才补充的部分
}

您可以指定是否需要节

@RenderSection("SomeStuff", required: false)
如果您不在视图中渲染它,那么它就不会出错


对于不呈现特定部分的特定版面,您需要使用类似于以下内容的layout.cshtml

@RenderSection("Somestuff", required:false)

通过将所需参数设置为false,可以将节设置为可选。如果您希望在分区周围包含一些可选的包装器HTML,那么还可以使用IsSectionDefined方法

@if(IsSectionDefined(“侧栏”))
{
@RenderSection(“侧栏”,必填项:false)
}

我在尝试将代码动态注入内联脚本时遇到了类似的问题,我通过以下方式解决了这个问题:

@if (someCondition)
    {
        @Html.Raw(@"
              Your stuff here
        ");
    }

你是说像一个
if
语句吗?我喜欢加法too@daveL-英雄所见略同。老问题,但请看以下答案:也许我做错了什么,但当我将部分放入主页时,布局页面失败,因为它没有调用
@RenderSection(“something”)
。似乎呈现部分应该是可选的,但它的行为与此不同。我得到
以下部分已经定义,但尚未为布局页面“/Views/Layouts/_Layout1.cshtml”呈现:“something”.
听起来好像是在强迫我渲染该部分。@sircodesalot-我相信版面希望您包括@RenderSection(“something”)。。。你可以把你的条件放在布局中,然后在那里调用它(就像我向你展示的那样)。。。。或者直接在页面中使用
@if(yourCondition){}
,而不涉及
布局
页面。这怎么可能是公认的答案?这是另一个问题!反过来说:我在视图中定义一个剖面,然后在布局中不使用它-我可以这样做吗?
@if (someCondition)
    {
        @Html.Raw(@"
              Your stuff here
        ");
    }