gpt4 book ai didi

.net-core - 具有 Null 值的 Blazor 参数

转载 作者:行者123 更新时间:2023-12-02 02:24:36 25 4
gpt4 key购买 nike

我们有一个 Blazor Server app core 3.1,我们添加一个组件并像这样从导航中调用它

<a href="/Claimaction" class="nav-link">
<i class="far fa-circle nav-icon"></i>
<p>Claims</p>
</a>

有一段时间我想通过另一个参数如“/Claimaction/PId”来访问这个组件我想通过组件本身的输入直接设置这个参数但是当在没有参数值的情况下从 NAV 调用组件时,组件集抱歉,该地址没有任何内容。如何解决这个问题以允许用户通过三种方式设置参数值

  1. 通过 Nav 喜欢“/Claimaction/100001”
  2. 按组件输入控制
  3. 允许打开带有 Null 参数值的组件

最佳答案

我认为您正在寻找的是一个可选的 Route 参数。

Since .Net5, optional route parameters exist natively. Just add a ? at the end of the parameter.

@page "/Claimaction/{ClaimsId:int}"
@* if navigation without id, should be possible, this route is needed too *@
@page "/Claimaction"

@* for .NET 5 only on @page directive is needed
@page "/Claimaction/{ClaimsId:int?}"
*@

@code{

[Parameter]
public Int32? ClaimsId { get; set; }

public override async Task OnParametersSetAsync()
{
await base.OnParametersSetAsync();
ClaimsId = ClaimsId ?? -1; // set default value if not set via routing or input
}

}


因为 ClaimsId 的名称作为路由器参数 {ClaimsId:int},所以它在通过 Url 使用时被绑定(bind),例如/ClaimsAction/10235(方式 1)

因为 ClaimsId 是一个 Parameter,您可以通过绑定(bind)或任何其他方式设置它。 (方式 2)。即使存在 @page 指令,您仍然可以将其用作嵌套在其他组件或布局中的“普通”组件。

因为 ClaimsId 是可以为 null 的类型,所以它根本不需要值。如果没有通过路由或输入接收到任何值,则该值将设置为 -1。为实现此行为,我们覆盖了 SetParamterAsync 并在那里设置了一个默认值 ( ClaimsId = ClaimsId ?? -1;)。

我也推荐阅读本教程。

关于.net-core - 具有 Null 值的 Blazor 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65878958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com