Blazor(服务器端)RouteAttribute 在核心 3.0 版本中被破坏了吗?
Blazor (Server-Side) RouteAttribute is broken in core 3.0 release?
我从预览版 7 迁移到发布 Core 3.0
我有一个只有-class个组件的库
我有这个 LocationViewModel:ComponentBase 它工作得很好,但现在不行了:(
我的视图模型:
[Layout(typeof(LayoutComponent))]
[Route("/location")]
public class LocationViewModel : ViewModelBase<Location>
{}
我的布局:
public class LayoutComponent : LayoutComponentBase
{
...
Builder.AddContent(1,Body);
...
}
我的_Host.cshtml
<app>@(await Html.RenderComponentAsync<LayoutComponent>(RenderMode.ServerPrerendered))
</app>
我的app.razor
@using SystemCore.LayoutComponents;
@using Microsoft.AspNetCore.Components.Web;
@using FacilityManagementSystem.ViewModels;
<Router
AppAssembly="@typeof(Startup).Assembly" <-- i tried 'App' before , still no use
AdditionalAssemblies="new List<System.Reflection.Assembly>() { typeof(LocationViewModel).Assembly }"
>
<Found Context="routeData">
<RouteView RouteData="@routeData" DefaultLayout="@typeof(LayoutComponent)" />
</Found>
<NotFound>
<LayoutView Layout="@typeof(LayoutComponent)">
<p>Sorry, there's nothing at this address.</p>
</LayoutView>
</NotFound>
</Router>
当我前往位置“~base/location”
时,我的 LocationViewModel 没有呈现
我试过这个来检查我的视图模型是否有问题..
_Host.cshtml
<app>@(await Html.RenderComponentAsync<LocationViewModel>(RenderMode.ServerPrerendered))
</app>
成功了!
我的假设是某些东西在没有直接渲染时没有捕捉到我的视图模型
请帮忙,因为这对我来说很重要,抱歉打扰了
编辑 (1) : 顺便说一句,浏览器控制台中没有出现错误
我解决了问题!
为了使用您自己的自定义 LayoutComponent
,您必须从 App.razor
中删除 DefaultLayout=@MainLayout
,否则 renderer
将在每个组件上强制 MainLayout
,即使它有 LayoutAttribute
类型不是 MainLayout
希望对您有所帮助...
我从预览版 7 迁移到发布 Core 3.0 我有一个只有-class个组件的库 我有这个 LocationViewModel:ComponentBase 它工作得很好,但现在不行了:(
我的视图模型:
[Layout(typeof(LayoutComponent))]
[Route("/location")]
public class LocationViewModel : ViewModelBase<Location>
{}
我的布局:
public class LayoutComponent : LayoutComponentBase
{
...
Builder.AddContent(1,Body);
...
}
我的_Host.cshtml
<app>@(await Html.RenderComponentAsync<LayoutComponent>(RenderMode.ServerPrerendered))
</app>
我的app.razor
@using SystemCore.LayoutComponents;
@using Microsoft.AspNetCore.Components.Web;
@using FacilityManagementSystem.ViewModels;
<Router
AppAssembly="@typeof(Startup).Assembly" <-- i tried 'App' before , still no use
AdditionalAssemblies="new List<System.Reflection.Assembly>() { typeof(LocationViewModel).Assembly }"
>
<Found Context="routeData">
<RouteView RouteData="@routeData" DefaultLayout="@typeof(LayoutComponent)" />
</Found>
<NotFound>
<LayoutView Layout="@typeof(LayoutComponent)">
<p>Sorry, there's nothing at this address.</p>
</LayoutView>
</NotFound>
</Router>
当我前往位置“~base/location”
时,我的 LocationViewModel 没有呈现我试过这个来检查我的视图模型是否有问题..
_Host.cshtml
<app>@(await Html.RenderComponentAsync<LocationViewModel>(RenderMode.ServerPrerendered))
</app>
成功了!
我的假设是某些东西在没有直接渲染时没有捕捉到我的视图模型 请帮忙,因为这对我来说很重要,抱歉打扰了
编辑 (1) : 顺便说一句,浏览器控制台中没有出现错误
我解决了问题!
为了使用您自己的自定义 LayoutComponent
,您必须从 App.razor
中删除 DefaultLayout=@MainLayout
,否则 renderer
将在每个组件上强制 MainLayout
,即使它有 LayoutAttribute
类型不是 MainLayout
希望对您有所帮助...