Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.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# 如何创建子布局或使用固定HTML包装@RenderBody?_C#_Asp.net_Asp.net Core Mvc - Fatal编程技术网

C# 如何创建子布局或使用固定HTML包装@RenderBody?

C# 如何创建子布局或使用固定HTML包装@RenderBody?,c#,asp.net,asp.net-core-mvc,C#,Asp.net,Asp.net Core Mvc,一些上下文:我目前正在将一个旧的.asp站点移植到asp.NET核心 在布局、视图组件和视图中拆分asp页面时,我注意到一些视图之间共享一些常见的包装html片段。我确定了三个不同的子布局,但我不想复制布局中所有页面上使用的部分 据我所知,ViewComponents无法在其标记内呈现动态代码 有没有办法定义这样的事情: @{ Layout = "_Layout"; } <!-- my view code --> _布局 <html><head>...<

一些上下文:我目前正在将一个旧的.asp站点移植到asp.NET核心

在布局、视图组件和视图中拆分asp页面时,我注意到一些视图之间共享一些常见的包装html片段。我确定了三个不同的子布局,但我不想复制布局中所有页面上使用的部分

据我所知,ViewComponents无法在其标记内呈现动态代码

有没有办法定义这样的事情:

@{ Layout = "_Layout"; }
<!-- my view code -->
_布局

<html><head>...</head>
    <body>@RenderSubLayout("_subLayoutName.cshtml")</body>
</html>
_subLayoutName.cshtml

<div class="outer"> 
    <div class="inner">
         @RenderBody()
    </div>
</div>

@RenderBody在何处呈现由操作决定的视图?

我不知道ASP.NET核心,但在.NET framework中,您可以使用不同的母版页。只需在~/Views/Shared/folder中创建两个不同的布局,然后在页面顶部页眉的每个页面上设置所需的布局:

@{
Layout = "~/Views/Shared/_LayoutPage1.cshtml"
}

下面是一个链接,例如:

我不知道ASP.NET核心,但在.NET framework中,您可以使用不同的母版页。只需在~/Views/Shared/folder中创建两个不同的布局,然后在页面顶部页眉的每个页面上设置所需的布局:

@{
Layout = "~/Views/Shared/_LayoutPage1.cshtml"
}

这里有一个链接,例如:

布局是视图,视图是布局。它主要是关于如何使用它,尽管当您使用视图作为布局时,会有一些功能上的差异。关键在于,正如视图可以引用布局一样,布局也可以引用布局。例如,你习惯于看到这样的东西:

@{ Layout = "_Layout"; }
<!-- my view code -->
这将是一个基于RenderBody的布局,它本身使用一个布局,这意味着渲染此布局的结果将转储到指定的布局中,并在其中调用RenderBody

根据您的示例:

_Layout.cshtml


换句话说,您通过实际呈现一个Foo节来定义Foo节。然后,该部分将由视图定义,漏斗状地返回到基本布局。

布局是视图,视图是布局。它主要是关于如何使用它,尽管当您使用视图作为布局时,会有一些功能上的差异。关键在于,正如视图可以引用布局一样,布局也可以引用布局。例如,你习惯于看到这样的东西:

@{ Layout = "_Layout"; }
<!-- my view code -->
这将是一个基于RenderBody的布局,它本身使用一个布局,这意味着渲染此布局的结果将转储到指定的布局中,并在其中调用RenderBody

根据您的示例:

_Layout.cshtml


换句话说,您通过实际呈现一个Foo节来定义Foo节。然后,该部分将由视图定义,并返回到基本布局。

这正是我不想做的事情,因为一个主要部分或结果布局将具有相同的头部部分和视图组件。我不想复制那部分哦,现在我明白了!嗯,不管怎样,你已经有了正确的答案,顺便说一下,克里斯·普拉特的答案对我也很有用。祝你好运这正是我不想做的事情,因为一个主要部分或产生的布局将具有相同的头部部分和视图组件。我不想复制那部分哦,现在我明白了!嗯,不管怎样,你已经有了正确的答案,顺便说一下,克里斯·普拉特的答案对我也很有用。祝你好运
@{ Layout = "_SubLayoutName"; }
<p>This is my view!</p>
<html>
    <head>...</head>
    <body>
        <div class="outer"> 
            <div class="inner">
                <p>This is my view!</p>
            </div>
        </div>
    </body>
</html>
@section Foo
{
    @RenderSection("Foo")
}