2012-03-21 3 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

문제가되는 줄에 중단 점을 넣고 디버그하려했는데 userID 값이 무엇인지 확인 했습니까? –

답변

2

오류 라인의 userID은 분명히 정수로 변환 될 수 없습니다. 중단 점을 추가하고 변수가 실제로 어떤 값인지 확인한 다음 코드를 수정할 수 있습니다.

현재 더 안전한 방법으로 변환 할 수 있습니다. 마찬가지로

int userIDInt; 
if (int.TryParse(userID, out userIDInt)) 
{ 
    if (userIDInt == loggedID) 
     // ... 
} 
else 
    // handle the error 
관련 문제