Blazor .NET Core 3.0-cshtml页面可以使用MainLayout.razor

时间:2019-09-25 06:40:13

标签: layout blazor .net-core-3.0

在Blazor的早期版本中,所有文件都是cshtml页面,并且能够使用类似于MVC项目的_layout-一切都很好。

但是,现在在新的.NET Core 3.0版本中,Blazor模板已切换为* .razor文件,这些文件是剃刀组件(不是剃刀页面)。现在,该布局为 Shared / MainLayout.razor ,并通过路由在 App.razor 文件中应用:

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

因此这会造成混乱。我们仍然可以将剃须刀页面(.cshtml文件)添加到项目中,但是它们没有应用布局。创建并维护2个单独的相同布局,其中1个用于剃须刀页面,而1个用于剃须刀组件,将是一件痛苦的事情。我找不到任何指导。

是否可以将剃刀组件布局( Shared / MainLayout.razor )应用于同一项目中的剃刀页面(.cshtml文件)?如果没有,推荐的方法是什么?

3 个答案:

答案 0 :(得分:0)

我目前有同样的问题,这确实很烦人。也将对此感兴趣的解决方案。我什至无法加载

@{

    Layout = "shared/MainLayout.razor";
}

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

答案 1 :(得分:0)

快速答案是“否”。当前,您可以将Razor组件加载到Razor页面中,但不能将Razor页面加载到Razor组件中。 official docs中对此进行了说明。

我不确定是否有推荐的方法-如果您的目标是尽可能多地使用Razor组件,除非尝试尽可能地重构为Razor组件。

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

答案 2 :(得分:0)

在_Layout页面的 head 中添加

msg

正文底部的

添加

<base href="~/" />

然后在您的 _Host.cshtml 文件添加

<script src="_framework/blazor.server.js"></script>

有关更多信息,请遵循此link