C# 如何检查类型为nullable int的查询字符串是否无效?
我想检查用户是否使用C# 如何检查类型为nullable int的查询字符串是否无效?,c#,blazor,C#,Blazor,我想检查用户是否使用 无效的查询字符串\earth\xyz或 有效的查询字符串\earth\12或 有效的查询字符串\earth 下面我只能检查最后两个。如何检查第一个 <h3>Earth</h3> @page "/earth" @page "/earth/{id:int}" @if(ID==null) { <h1>Null</h1> } else { <h1>@ID<
- 无效的查询字符串
或\earth\xyz
- 有效的查询字符串
或\earth\12
- 有效的查询字符串
\earth
<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; }
}
地球
@第页“/地球”
@第/earth/{id:int}页
@if(ID==null)
{
无效的
}
其他的
{
@身份证
}
@代码{
[参数]
公共int?ID{get;set;}
}
我认为Blazor对此缺乏支持
另一种方法是将id更改为string,并使用@Elizer提到的方法手动将其解析为int
根据您的三个条件:
- 如果
成功,则表示URL有效,并且其中包含一个int参数TryParse
- 如果解析失败且
为null或空,则表示URL有效字符串ID
- 如果解析失败,并且
不为null或空,则表示URL无效字符串ID
\earth\xyz这样的url,页面根本不会被点击;也就是说,永远不会呈现页面
当路由器组件找不到与请求路由匹配的路由时,它将显示
带有文本的布局视图组件抱歉,此地址没有任何内容。
你的页面从未被点击
下面是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>
对不起,这个地址什么也没有
OK。谢谢那么,解决这个问题的建议方法是什么?什么问题?这里没有问题…用户只是键入了一个错误的url。通常,网站会显示一个带有大图像、大OOP和主页链接的页面。如果您坚持,您可以创建代码来验证键入的url是否包含文字earth,例如,\earth\xyz,并自动将用户重定向到earth页面,或向用户提供链接以执行此操作。。。