2012-10-04 33 views
0

我有下面的無法轉換HiddenField到的Int32

UserInfo TargetUser = UserController.GetUserById(PortalSettings.PortalId, FriendId); 

與數據類型轉換的問題,我只是想出

HiddenField hfFriendId = item.FindControl("hfFriendId") as HiddenField; 
Int32 FriendId = Convert.ToInt32(hfFriendId.Value); 

我需要使用FriendId作爲和INT32這兩個參數預計是int32。 當我調試這個'TargetUser'爲空。

問題是什麼?

+0

是否有任何UserInfo可用於參數傳遞?當你傳遞參數時'FriendId'的價值是什麼? – V4Vendetta

+0

檢查'hfFriendId.Value'的值是否爲空(或空)。 'Int32 FriendId = 0; if(hfFriendId.Value!=「」){FriendId = Convert.ToInt32(hfFriendId.Value); else {FriendId = 0;}}' – user1509

+0

就是這樣,FriendId中填充了一個值 –

回答

1

如果您不能確定在hiddenfield提供的價值,然後,而不是使用

Int32 FriendId = Convert.ToInt32(hfFriendId.Value); 

嘗試

int FriendId = int.Parse(hfFriendId.Value); // will throw exception if parse fails 

或更好

int FriendId ; 
if(int.TryParse(hfFriendId.Value, out FriendId)) 
    //get userinfo 

此外,它可能是一個問題用你的UserController.GetUserById方法來防止Convert得到解析的值並且不返回零。

+0

我嘗試了這兩個建議,但無法實現結果.. –

+0

我在asp:listView itemtemplate中使用隱藏字段將值傳回給後面的代碼。 HiddenField本質上是一個字符串。我想知道,是否有類似的方式可以將值作爲int傳回? –

+0

你的建議是對我的問題的有效答案。然而,這個問題是自產的。 UserInfo對象不僅需要一個int數據類型,而且還需要一個有效的userid!不知何故,我的測試數據是項目不是一個有效的用戶ID。 –

相關問題