如何在 razor 类库中的子布局中指定"MainLayout"



如果使用子布局,则需要指定应用程序在大多数情况下使用的MainLayout,即MainLayout.razor

ChatPageLayout.razor在一个单独的DLL中。

@inherits LayoutComponentBase
@layout MainLayout  <---- How to specify what consumer uses
<ChatRoom RoomName="TestRoom" >
<ChatNav />
@body
</ ChatRoom>

如何指定或提供库使用者使用的布局的值类型。

不太确定你的问题是什么,所以这里有几个答案取决于问题的真正含义。

如果您只想引用另一个库中的Layout,那么将该引用添加到项目中,然后完全引用它,或者将@namespace添加到_Import.razor中。

@layout Blazor.Starter.Shared.MainLayout

如果您想在运行时更改它,那么就不能使用开箱即用的代码。页面的布局在编译时设置为属性。@layout变为

[Microsoft.AspNetCore.Components.LayoutAttribute(typeof(MainLayout))]
public partial class Index : Microsoft.AspNetCore.Components.ComponentBase

布局和所有内容都由RouteView组件呈现。您可以在此处更改默认值,但如果您想在运行时管理布局,则需要编写一个新的RouteView

// App.razor
<Router AppAssembly="@typeof(Program).Assembly" PreferExactMatches="@true">
<Found Context="routeData">
<RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
</Found>
<NotFound>
<LayoutView Layout="@typeof(MainLayout)">
<p>Sorry, there's nothing at this address.</p>
</LayoutView>
</NotFound>
</Router>

相关内容

  • 没有找到相关文章

最新更新