如何将STRING转换为GUID

时间:2010-12-28 17:46:10

标签: c# asp.net

我需要将String投射到Guid

我正在使用此代码,但

string myUserIdContent = ((Label)row.FindControl("uxUserIdDisplayer")).Text;
Guid myGuidUserId = new Guid(myUserIdContent); // PROBLEM HERE
MembershipUser mySelectedUser = Membership.GetUser(myGuidUserId);

我收到此错误

  

异常详细信息:System.FormatException:无法识别   Guid格式。

实现结果的正确方法是什么?

2 个答案:

答案 0 :(得分:6)

使用Guid.TryParse

      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到组显示的位数。假定指定的数字是该组的低位数字。