Blazor.NETCore3.0-cshtml页面可以使用MainLayout.razor吗

Blazor.NETCore3.0-cshtml页面可以使用MainLayout.razor吗,layout,blazor,.net-core-3.0,Layout,Blazor,.net Core 3.0,在以前版本的Blazor中,所有文件都是cshtml页面,并且能够使用类似于MVC项目的布局——一切都很好 但现在在新的.NETCore3.0版本中,Blazor模板切换为*.razor文件,这些文件是razor组件(而不是razor页面)。布局现在是共享/MainLayout.razor,并通过App.razor文件中的路由应用: <RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />

在以前版本的Blazor中,所有文件都是cshtml页面,并且能够使用类似于MVC项目的布局——一切都很好

但现在在新的.NETCore3.0版本中,Blazor模板切换为*.razor文件,这些文件是razor组件(而不是razor页面)。布局现在是共享/MainLayout.razor,并通过App.razor文件中的路由应用:

<RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />

所以这会造成混乱。我们仍然可以将razor页面(.cshtml文件)添加到项目中,但它们无法应用布局。创建和维护两个完全相同的布局是一件痛苦的事情,一个用于razor页面,一个用于razor组件。我找不到这方面的任何指导


有没有办法将razor组件布局(Shared/MainLayout.razor)应用于同一项目内的razor页面(.cshtml文件)?当然,如果没有,推荐的方法是什么?

我目前也有同样的问题,这真的很烦人。我也对解决这个问题感兴趣。我甚至无法加载布局

@{

    Layout = "shared/MainLayout.razor";
}

因为它需要一个名为MainLayout.razor.cshtml的文件

答案是否定的。目前,您可以将Razor组件加载到Razor页面中,但无法将Razor页面加载到Razor组件中。这一点在报告中有所说明

我不确定是否有这样的推荐方法——除非尽可能多地尝试和重构Razor组件,如果您的目标是在任何地方使用组件的话

如果您想保持混合,那么我建议将Razor页面作为页面使用(希望有意义),并且只使用这些页面中的组件。这样,您只需要一种布局类型

在_布局页面的头部添加

<base href="~/" />

有关更多信息,请参见此

,因为我必须构建一些身份,以便更改登录和其他页面。似乎没有办法继承您所说的布局。你有没有找到解决这个问题的方法?NotFound组件(在App.razor中)能否将布局设置为a_layout.cshtml?整个应用程序仅供授权用户使用。我已经有了一个用于标识页的.cshtml布局,可以使用它吗?或者我还需要创建第三个布局吗?
<script src="_framework/blazor.server.js"></script>
@{
    Layout = "_Layout"; //your Layout name
}