【问题标题】:MVC3 / C# - Invalid Cast Exception - Specified cast is not validMVC3 / C# - 无效的转换异常 - 指定的转换无效
【发布时间】:2012-06-28 19:38:12
【问题描述】:

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

指定的转换无效。

说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详情:System.InvalidCastException:指定的强制转换无效。

这是中断的代码行 -

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

【问题讨论】:

    标签: c# asp.net-mvc-3 .net


    【解决方案1】:

    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的部分中添加任何内容
    • 是的,这就是您成功获得id 值的地方。在其他任何地方,您无法确定它是否正确解析为 int。
    【解决方案2】:

    您的值,httpContext.Request.RequestContext.RouteData.Values["id"] 可能没有等效的 int。

    如果它是一个字符串,正如 spender 所说,你会尝试,

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

    智能可能会告诉你什么类型:

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

    就像你输入的一样。您还可以在调试器的“监视”选项卡中找到

    【讨论】:

      【解决方案3】:

      第一次打电话ToString()

      然后parseto int

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-21
        • 1970-01-01
        相关资源
        最近更新 更多