为什么我不能将e.CommandArgument作为Guid投射?

时间:2008-10-31 20:15:21

标签: .net asp.net vb.net

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

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

它引发了这个异常......

System.InvalidCastException was unhandled by user code
Specified cast is not valid

为什么我不能将 e.CommandArgument 投射为Guid?

4 个答案:

答案 0 :(得分:2)

尝试:

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

这有效......

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

答案 1 :(得分:2)

我猜测e.CommandArgument是一个字符串,不能通过强制转换到Guid。可以从字符串创建Guid:

在C#中:

 Guid DeleteId new Guid(e.CommandArgument);

我真的不知道VB.NET语法,但我会猜测:

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

答案 2 :(得分:1)

消息“强制转换无效”表示其中一个值的数据类型与数据库中的数据类型不匹配。你能在设置DeleteId值的行上放一个断点,看看Guid是什么样子的吗?然后,您可以将它与您在DogId数据库中看到的内容进行比较。我怀疑你会在那里找到你的数据类型问题。

答案 3 :(得分:1)

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