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

根据您的三个条件:

  • 如果
    TryParse
    成功,则表示URL有效,并且其中包含一个int参数
  • 如果解析失败且
    字符串ID
    为null或空,则表示URL有效
  • 如果解析失败,并且
    字符串ID
    不为null或空,则表示URL无效

你不能用这种方式检查(或者更确切地说,用其他方式指示),因为像
\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页面,或向用户提供链接以执行此操作。。。