我想检查用户是否使用导航
- 无效的查询字符串
earthxyz
或 - 有效查询字符串CCD_ 2或
- 有效的查询字符串CCD_ 3
下面我只能检查最后两个。如何检查第一个?
<h3>Earth</h3>
@page "/earth"
@page "/earth/{id:int}"
@if(ID==null)
{
<h1>Null</h1>
}
else
{
<h1>@ID</h1>
}
@code {
[Parameter]
public int? ID { get; set; }
}
您不能以这种方式检查(或者更确切地说,以其他方式指示(,因为使用类似earthxyz
的url,页面永远不会被命中;也就是说,永远不会呈现页面。
当路由器组件找不到与请求的路由匹配时,它会显示具有文本<p>Sorry, there's nothing at this address.</p>
的LayoutView
组件
你的页面永远不会被点击。。。
这是App.razor 中的标记
<Router AppAssembly="@typeof(Program).Assembly">
<Found Context="routeData">
</Found>
<NotFound>
<LayoutView Layout="@typeof(MainLayout)">
<p>Sorry, there's nothing at this address.</p>
</LayoutView>
</NotFound>
</Router>
我认为Blazor对此缺乏支持。
另一种方法是将id更改为字符串,并使用@Eliezer提到的TryParse
手动将其解析为int
。
基于您的三个条件:
- 如果
TryParse
成功,则意味着URL是有效的,并且其中包含一个int参数 - 如果解析失败并且
string ID
为null或为空,则表示URL有效 - 如果解析失败";以及";
string ID
不为null或空,这意味着URL无效