我需要将String
投射到Guid
。
我正在使用此代码,但
string myUserIdContent = ((Label)row.FindControl("uxUserIdDisplayer")).Text;
Guid myGuidUserId = new Guid(myUserIdContent); // PROBLEM HERE
MembershipUser mySelectedUser = Membership.GetUser(myGuidUserId);
我收到此错误
异常详细信息:System.FormatException:无法识别 Guid格式。
实现结果的正确方法是什么?
答案 0 :(得分:6)
string myUserIdContent = ((Label)row.FindControl("uxUserIdDisplayer")).Text;
Guid myGuidUserId;
if (Guid.TryParse(myUserIdContent, out myGuidUserId)
{
MembershipUser mySelectedUser = Membership.GetUser(myGuidUserId);
}
else
{
// throw exception and/or inform user
}
答案 1 :(得分:2)
通过该异常的外观,您的字符串格式不正确。每个MSDN:
包含以下格式之一的GUID的字符串(“d”表示忽略大小写的十六进制数字):
32个连续数字:
dddddddddddddddddddddddddddddddd
- 或 -
组中包含8,1,4,4和12位数字的连字符。可以选择将整个GUID括在匹配的大括号或括号中:
dddddddd-dddd-dddd-dddd-dddddddddddd
- 或 -
{dddddddd-dddd-dddd-dddd-dddddddddddd}
- 或 -
(dddddddd-dddd-dddd-dddd-dddddddddddd)
- 或 -
8位,4位和4位数组,以及8组2位数的子集,每组以“0x”或“0X”为前缀,并以逗号分隔。整个GUID以及子集都包含在匹配的大括号中:
{0xdddddddd, 0xdddd, 0xdddd,{0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd}}
所有大括号,逗号和“0x”前缀都是必需的。所有嵌入的空格都被忽略。组中的所有前导零都将被忽略。
组中显示的数字是可以在该组中显示的有意义数字的最大数量。您可以指定1到组显示的位数。假定指定的数字是该组的低位数字。