2012-03-21 18 views
0

groupIDは多数のチェックボックスです。私はUserIDのコンマ区切りのリストを作成しようとしています。 GroupIDは、多数のユーザーをメンバーとするグループを識別します。だから私は持っている:"入力文字列が正しい形式ではありませんでした。 C#

 string groupIds = Request.Form["groupID"]; 
     if (groupIds!=null){ 
      string[] arrayOfGroupIds = groupIds.Split(','); //possible error here if only one checkbox is ticked? 
      foreach (string id in arrayOfGroupIds){ 
       var users = db.Query("SELECT guestID FROM userGroups WHERE id = @0", id); 
       foreach(var user in users){ 
        userIds += user.guestID + ","; 
       } 
      } 
     } 
     userIds += Request.Form["userId"] + "," + yourID; 

を私の次のページで、私はその後、呼び出し:

タイトルにエラーが発生し
string userIDs = Request.Form["userIDs"]; 
string[] userIdsArray = userIDs.Split(','); 
foreach(string userID in userIdsArray){ 
if(Convert.ToInt32(userID) == loggedID) { //ERROR HERE 
     db.Execute("INSERT INTO Membership(GroupId,UserId) VALUES (@0, @1)", groupID, userID); 
    } 

この原因は何ですか?

+0

サイドノートとして、Nhiberateやentityframework、さらにはlinq2sqlなどを真剣に検討してください。 –

+0

'userIdsArray'のすべての' userID'は整数ですか? –

+0

違反行にブレークポイントを置き、ユーザーIDの値を確認してデバッグしようとしましたか? –

答えて

2

エラーラインのuserIDは明らかに整数に変換できません。ブレークポイントを追加して、変数が実際にどのような値であるかを確認し、コードを変更することができます。

ところで、より安全な方法で変換することができます。 Like

int userIDInt; 
if (int.TryParse(userID, out userIDInt)) 
{ 
    if (userIDInt == loggedID) 
     // ... 
} 
else 
    // handle the error 
関連する問題