返回404 In Blazor Server页面



我正试图将Razor Pages应用程序迁移到Blazor Server应用程序,作为分阶段迁移的一部分(而不是大爆炸(。我目前正在移动一组相对直接的CRUD页面。这些页面有一个典型的路线结构,比如。。。

/entity/
/entity/edit/{id}
/entity/detail/{id}
/entity/delete/{id}

在"编辑"的剃刀页面中,我通常会有一个OnGetAsync方法,该方法接受id作为参数,使用id搜索实体并返回页面。但是,如果id不是有效的实体,我的OnGet将返回NotFound(IActionResult(。我想弄清楚的是如何使用Blazor服务器页面/组件来实现这一点。

我的blazor页面看起来像这样(只是相关的部分(

@page "/entity/edit/{id:int}"
...
@code {
[Parameter] public int Id { get; set; }
public Entity Model { get; set; }
protected override async Task OnParametersSetAsync()
{
Model = await SomeServiceCall.GetAsync(Id);
if(Model == null)
return; // TODO: Return 404 rather than the page
}
}

如何告诉Blazor返回404?所以显示的是我的而不是我的页面?

您的项目中有App.razor文件

<Router AppAssembly="@typeof(App).Assembly">
<Found Context="routeData">
<RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
<FocusOnNavigate RouteData="@routeData" Selector="h1" />
</Found>
<NotFound>
<PageTitle>Not found</PageTitle>
<LayoutView Layout="@typeof(MainLayout)">
<p role="alert">Sorry, there's nothing at this address.</p>
</LayoutView>
</NotFound>
</Router>

看看这个部分,当Blazor没有找到正在导航的路径时,它会显示这个部分的html,所以你可以用你想显示的信息替换这一行,然后

<p role="alert">Sorry, there's nothing at this address.</p>

相关内容

  • 没有找到相关文章

最新更新