2010-12-28 19 views
2

StringGuidにキャストする必要があります。 System.FormatException:認識できない のGUIDフォーマットSTRINGをGUIDにキャストする方法

私はこのコードが、

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

を使用しています私はこのエラーに

例外の詳細を受けます。

結果を得るための適切な方法は何ですか?

+4

もちろん、あなたはフォーマットを修正することができます... –

+0

GuidConverterクラスの使用についてはどうですか?あなたは私に例を教えていただけますか? – GibboK

+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 
     } 
+2

GUIDが具体的な形式:['Guid.TryParseExact'](http://msdn.microsoft.com/en-us/library/system.guid.tryparseexact.aspx) – Richard

2

あなたの文字列は正しくフォーマットされていません。 MSDNあたり:

32連続桁:

dddddddddddddddddddddddddddddddd

次のいずれかの形式でGUIDを含む文字列( "d" は、その場合は無視され進数字を表します。)

- または -

グループ間のハイフンを含む8,4,4,4および12桁のグループ。全体GUIDは、必要に応じてマッチング括弧または括弧で囲むことができる。

dddddddd-dddd-dddd-dddd-dddddddddddd

- または -

{dddddddd-dddd-dddd-dddd-dddddddddddd}

- または -

(dddddddd-dddd-dddd-dddd-dddddddddddd)

- または -

8桁、4桁、4桁のグループ、および2桁の8つのグループのサブセットで、各グループの先頭には「0x」または「0X」が付いており、コンマで区切られています。全体GUID、ならびにサブセットは、マッチング中括弧で囲まれている:

{0xdddddddd, 0xdddd, 0xdddd,{0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd}}

すべて括弧、コンマ、および「0X」プレフィックスが必要です。すべての埋め込みスペースは無視されます。グループ内の先頭のゼロはすべて無視されます。

グループに表示される数字は、そのグループに表示される可能性のある数字の最大数です。 1からグループに表示される桁数を指定できます。指定された桁は、グループの下位桁とみなされます。

+0

Guidは正しく書かれていますが、私はCASTに問題があると思います。多分Convertはそれを解決するだろうか? – GibboK

+0

あなたが使用している正確な文字列を投稿してください。 –

+0

"9accaf71-fe30-48dd-b8a0-062459b4cdfc" – GibboK

関連する問題