无法将“System.String”类型的对象转换为“System.Int32”类型。关于 Blazor/Razor 路由参数

Posted

技术标签:

【中文标题】无法将“System.String”类型的对象转换为“System.Int32”类型。关于 Blazor/Razor 路由参数【英文标题】:Unable to cast object of type 'System.String' to type 'System.Int32'. on Blazor/Razor routing parameters 【发布时间】:2021-11-29 14:22:28 【问题描述】:

我尝试使用 /somepage/Id 调用页面,其中 Id 是具有 int 属性的 [Parameter] 并且路由被称为字符串,它不应该隐式地将字符串转换为 int 吗?为什么它根本不起作用?我期望它会按原样识别参数...

我应该如何让路由中间件识别参数?即使在 MVC 中,这也可以正常工作...

页面路由

@page "/EditEmployee/Id"

链接

<a href="/EditEmployee/@Employee.EmployeeId" class="btn btn-primary m-1">Edit</a>

页面中的参数

    [Parameter]
    public int Id  get; set; 

结果是异常,页面没有加载

【问题讨论】:

始终在细节中包含异常。 【参考方案1】:

做起来

 @page "/EditEmployee/Id:int"

【讨论】:

作为评论,我让它动态停止异常,因为抛出它需要一个 int 到字符串的转换然后向后所以我认为 int.Parse 它不起作用并且它抛出了异常但我也按照你的建议做了

以上是关于无法将“System.String”类型的对象转换为“System.Int32”类型。关于 Blazor/Razor 路由参数的主要内容,如果未能解决你的问题,请参考以下文章

提示:无法将类型为“System.DateTime”的对象强制转换为类型“System.String”。

无法将类型为“System.DateTime”的对象强制转换为类型“System.String”

无法将类型“System.String”的对象转换为类型“System.Byte []”错误 MYSQL NET CORE 3.1

无法将“System.String”类型的对象转换为“System.Int32”类型。关于 Blazor/Razor 路由参数

无法将“System.String”类型的对象转换为 C# 中的“Oracle.DataAccess.Client.OracleParameter”类型

无法将类型为“Newtonsoft.Json.Linq.JObject”的对象转换为类型“System.Collections.Generic.Dictionary`2[System.String,S