2010-11-25 536 views
1

我有一個DetailsView,我需要在DataKeyNames「UserId」(一個Guid字段)中獲取值specifield並將其添加到對象Guid。如何將對象字符串轉換爲對象Guid在C#

目前我使用此代碼:

String myUserId = (String)uxAuthorListDetailsView.DataKey["UserId"].ToString(); 

但我需要的東西,如:

Guid myUserGuid = (Guid)uxAuthorListDetailsView.DataKey["UserId"].ToString(); 

但不工作我得到錯誤錯誤

Cannot convert type 'string' to 'System.Guid' 

什麼可能是問題?謝謝你們的支持!

回答

1

檢查:什麼對象uxAuthorListDetailsView.DataKey [「用戶ID 「]
我想這必須已經是Guid;並不需要轉換

2
var myUserGuid = new Guid(uxAuthorListDetailsView.DataKey["UserId"].ToString()); 
6

好了,問題是,你打電話ToString(),然後嘗試該字符串轉換爲Guid,當有可用沒有這樣的轉換。可能的備選方案:

  • 演員代替調用ToString()的,如果原始值實際上是一個GUID:

    Guid guid = (Guid)uxAuthorListDetailsView.DataKey["UserId"]; 
    
  • 解析不是字符串:

    Guid guid = new Guid(uxAuthorListDetailsView.DataKey["UserId"].ToString()); 
    

如果這是用戶輸入的數據,或者有也就是說,爲什麼這個值有一半是不正確的,如果你使用的是.NET 4,你可能需要使用Guid.TryParse,這樣你可以在沒有異常的情況下處理失敗。

+0

感謝喬恩它是工作偉大的鑄造版本!再次感謝! – GibboK 2010-11-25 07:30:08

1

假設uxAuthorListDetailsView.DataKey [ 「用戶ID」]存儲有效的GUID

嘗試下調試這個

Guid myUserGuid = (Guid)uxAuthorListDetailsView.DataKey["UserId"] 

刪除ToString方法