2009-08-10 3 views
0

체크 박스 목록을 사용할 수있게되었고 "일반적인 방법"을 게시 할 때 값을 다시 얻을 수 없습니다. Request.Form을 사용하여 데이터베이스를 업데이트하기 전에 모델로 루프해야합니까?포스트에 모델링 할 값을 여러 개 바인딩

"userobj"의 게시물에는 userobj.UsersUsergroups count = 0이 있습니다.

제어 :

<input id="UsergroupID_0" name="UsergroupID" type="checkbox" value="2" /> <label for="UsergroupID_0" id="label-0">Grupp 1</label><br /> 
<input id="UsergroupID_1" name="UsergroupID" type="checkbox" value="3" /> <label for="UsergroupID_1" id="label-1">Grupp 2</label><br /> 
<input id="UsergroupID_2" name="UsergroupID" type="checkbox" value="4" /> <label for="UsergroupID_2" id="label-2">234234</label><br /> 
<input id="UsergroupID_3" name="UsergroupID" type="checkbox" value="5" /> <label for="UsergroupID_3" id="label-3">234234</label><br /> 
<input id="UsergroupID_4" name="UsergroupID" type="checkbox" value="6" /> <label for="UsergroupID_4" id="label-4">234234</label><br /> 
<input id="UsergroupID_5" name="UsergroupID" type="checkbox" value="7" /> <label for="UsergroupID_5" id="label-5">345345345</label><br /> 
<input id="UsergroupID_6" name="UsergroupID" type="checkbox" value="8" /> <label for="UsergroupID_6" id="label-6">3453453456</label><br /> 
<input id="UsergroupID_7" name="UsergroupID" type="checkbox" value="9" /> <label for="UsergroupID_7" id="label-7">Grupp 122</label><br /> 

가 어떻게 포스트 후 확인 된 값을 사용하여 사용자 개체를 "채울"수 있습니다 내가 체크 박스로 생성 한

 [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult UserEdit([BindAttribute(Include = "Firstname,Surname,Username,Email,Password,UserID,UsergroupID")]User userobj) 
    { 
     if (ModelState.IsValid) 
     { 
      try 
      { 
       us.SaveUser(userobj); 
      } 
      catch 
      { 
       ModelState.AddModelError("SomeError", "errrrrrrrrror"); 
      } 
     } 

     return View("UserDetail", new UsersAdminModel { User = userobj }); 
    } 

그리고? 미리

감사 /M

EDIT :

[AcceptVerbs (HttpVerbs.Post)] 공개 ActionResult의 UserEdit ([BindAttribute (포함 = "firstName을, 성 : I와 함께 시도

, Username, Email, Password, UserID, UsergroupID ")] 사용자 userobj, IList UsergroupID)

그리고 그 목록에있는 확인란의 값을 할당하는 것 같습니다 ...

하지만 userobj.UsersUsergroups에 할당하려면 어떻게해야합니까? 잘못된 유형 I은

/M

+0

사용자 정의 모델 바인더를 개발하지 않는 한 Request.Form을 사용하지 마십시오. –

+0

그 여러 값을 가진 post-method에서 어떻게 든 BindAttribute를 사용할 수 있습니까? –

답변

3

체크 아웃 할 때 필 Haack의 요소 목록을 결합 모델링하는 방법에 대한 우수한 blog post.

직접 사용할 수 있는지 여부는 모르겠지만 별도의 매개 변수로 ID를 가져온 다음 ID별로 그룹을 검색하여 사용자 개체에 추가 할 수 있습니다. ID가 주어지면 데이터베이스에서 그룹을 채울지 모르겠습니다. 이를 위해서는 사용자 정의 모델 바인더가 필요할 수 있습니다.

<input type="hidden" name="UserGroupID.Index" value="0" /> 
<input type="checkbox" name="UserGroupID[0]" id="UserGroupID_0" value="0" /> 
    <label for="UsergroupID_0" id="label-0">Group 0</label><br /> 
<input type="checkbox" name="UserGroupID[1]" id="UserGroupID_1" value="1" /> 
    <label for="UsergroupID_1" id="label-1">Group 1</label><br /> 
... 
+0

이 방법은 TextBox와 CheckBox에 모두 사용됩니다. 순서를 신경 쓰는 경우 숨겨진 색인 필드 만 있으면되고 순서대로 배열에 있어야합니다 (0,1,2,5,6 - 5,6은 배열/목록이 작성 될 때 누락됩니다). –

관련 문제