MVC3/C# - 无效的转换异常 - 指定的转换无效

3

有人知道如何解决这个错误吗?

指定的类型转换无效。

描述:当前 Web 请求的执行期间发生未经处理的异常。请检查堆栈跟踪以获取有关错误的更多信息以及代码中错误的源位置。

异常详细信息:System.InvalidCastException: Specified cast is not valid.

这是代码中出现错误的行 -

var id = (int)httpContext.Request.RequestContext.RouteData.Values["id"];
3个回答

5

httpContext.Request.RequestContext.RouteData.Values["id"] 可能是一个字符串,因此您需要对其进行解析:

var idStr=(string)(httpContext.Request.RequestContext.RouteData.Values["id"]);
int id;
if(int.TryParse(idStr, out id))
{
    //w00t
}

谢谢...哈哈...只有一件事 - 我应该在 //w00t 部分放置任何内容吗? - J0NNY ZER0
是的,那就是你成功获取 id 的值的地方。在其他任何地方,你都不能确定它是否被正确解析为整数。 - spender

1

你的值,httpContext.Request.RequestContext.RouteData.Values["id"] 可能没有整数等价物。

如果它是一个字符串,就像 Spender 说的那样,你可以尝试:

var id = int.Parse("httpContext.Request.RequestContext.RouteData.Values["id"]);

智能感知可能会告诉您类型:

httpContext.Request.RequestContext.RouteData.Values["id"]

就像您输入的那样。您还可以在调试器的“观察”选项卡中找到相关信息。


0

首先调用 ToString()

然后将其解析为 int

int.Parse(Url.RequestContext.RouteData.Values["id"].ToString())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接