【问题标题】:Why can't I cast e.CommandArgument as a Guid?为什么我不能将 e.CommandArgument 转换为 Guid?
【发布时间】:2008-10-31 20:15:20
【问题描述】:

以下代码在运行时失败……

Dim Id As Guid = CType(e.CommandArgument, Guid)

它抛出这个异常......

System.InvalidCastException 未被用户代码处理 指定的演员表无效

为什么我不能将 e.CommandArgument 转换为 Guid?

【问题讨论】:

    标签: .net asp.net vb.net


    【解决方案1】:

    试试:

    Dim DeleteId As Guid = New Guid(Convert.ToString(e.CommandArgument))
    

    这行得通...

    Dim DeleteId As Guid = New Guid(DirectCast(e.CommandArgument, String))

    【讨论】:

    • 对不起。问题出在第 137 行。我无法将 e.CommandArgument 转换为 Guid。
    • IS 替换第 137 行。
    【解决方案2】:

    我猜 e.CommandArgument 是一个字符串,它不能通过 cast 转换为 Guid。可以从字符串创建 Guid:

    在 C# 中:

     Guid DeleteId new Guid(e.CommandArgument);
    

    我不太了解 VB.NET 语法,但我猜一下:

     Dim DeleteId As Guid = New Guid(e.CommandArgument);
    

    【讨论】:

    • 你在我写完之前就发布了这个……这当然是正确的答案。
    【解决方案3】:

    消息“转换无效”表明其中一个值的数据类型与数据库中的数据类型不匹配。您可以在设置 DeleteId 值的行上放置一个断点并查看 Guid 的样子吗?然后,您可以将其与您在数据库中看到的 DogId 进行比较。我怀疑你会在那里发现你的数据类型问题。

    【讨论】:

    • 对不起。问题出在第 137 行。我无法将 e.CommandArgument 转换为 Guid。
    • 啊哈,我猜 James Curran 的回复会解决你的问题。
    【解决方案4】:

    您的错误与 LINQ to SQL 无关...这是一个转换错误。使用“新的 Guid(e.CommandArgument)”。

    【讨论】:

      猜你喜欢
      • 2012-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多