有人知道如何解决这个错误吗?
指定的类型转换无效。
描述:当前 Web 请求的执行期间发生未经处理的异常。请检查堆栈跟踪以获取有关错误的更多信息以及代码中错误的源位置。
异常详细信息:System.InvalidCastException: Specified cast is not valid.
这是代码中出现错误的行 -
var id = (int)httpContext.Request.RequestContext.RouteData.Values["id"];
有人知道如何解决这个错误吗?
指定的类型转换无效。
描述:当前 Web 请求的执行期间发生未经处理的异常。请检查堆栈跟踪以获取有关错误的更多信息以及代码中错误的源位置。
异常详细信息:System.InvalidCastException: Specified cast is not valid.
这是代码中出现错误的行 -
var id = (int)httpContext.Request.RequestContext.RouteData.Values["id"];
httpContext.Request.RequestContext.RouteData.Values["id"]
可能是一个字符串,因此您需要对其进行解析:
var idStr=(string)(httpContext.Request.RequestContext.RouteData.Values["id"]);
int id;
if(int.TryParse(idStr, out id))
{
//w00t
}
你的值,httpContext.Request.RequestContext.RouteData.Values["id"]
可能没有整数等价物。
如果它是一个字符串,就像 Spender 说的那样,你可以尝试:
var id = int.Parse("httpContext.Request.RequestContext.RouteData.Values["id"]);
智能感知可能会告诉您类型:
httpContext.Request.RequestContext.RouteData.Values["id"]
就像您输入的那样。您还可以在调试器的“观察”选项卡中找到相关信息。
首先调用 ToString()
然后将其解析为 int
int.Parse(Url.RequestContext.RouteData.Values["id"].ToString())
id
的值的地方。在其他任何地方,你都不能确定它是否被正确解析为整数。 - spender