2012-02-23 2 views
1

내가하는 뷰 모델을 모델링하기 위해 내가보기에 모든 것을 통과 할 수 오전MVC3 체크 박스를 통과 값은 다시 단지 <pre><code>public class Visits { public List<Visit> visits { get; set; } } </code></pre> <p></p> 내 방문 모델에서 내가 가진

public bool ValidVisit { get; set; } 

확인하고 모든 방문을보기에 렌더링하십시오. 뷰가 보이는

@model TheWallSite.ObjectModels.Visits 

@{ 
    ViewBag.Title = "Potential invalid visits!"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
@using (Html.BeginForm()) 
{ 
     <fieldset> 
     <table> 
      <tr><th>Check In/Out Time</th><th>Visit Type</th><th>In/Out</th><th>IP</th><th>SSO ID</th><th>Valid Visit</th></tr> 

      @foreach (var item in Model.visits) 
      { 
       <tr> 
        <td>@Html.DisplayFor(model => item.InOutTime)</td> 
        <td>@Html.DisplayFor(model => item.VisitType)</td> 
        <td>@Html.DisplayFor(model => item.VisitName)</td> 
        <td>@Html.DisplayFor(model => item.IP)</td> 
        <td>@Html.DisplayFor(model => item.SSO)</td> 
        <td>@Html.EditorFor(model => item.ValidVisit)</td> 
       </tr> 
      } 
     </table> 
     <input type="submit" value="Submit" /> 
     </fieldset> 
} 

내가 최종 사용자가 확인/ValidVisit의 선택을 취소 한 다음 컨트롤러에 다시 다음을 전달하고 내 데이터베이스에서 올바른 변경할 수 싶어한다 나는 데 문제 .. 같은 I 이 작업을 수행하는 방법을 알아내는 시간을 가지고 있습니다. 어떤 제안? 내 [HttpPost] 컨트롤러 서명은

public ActionResult ListQuestionableVisits(Visits model, FormCollection forms) 

입니다.하지만 아무 것도 컨트롤러로 돌아 오지 않는 것 같습니다.

+0

'ListQuestionableVisits'가 실행 되었습니까? 왜냐하면'Html.BeginForm()'에 타겟 액션으로 설정해야하기 때문에 – Marc

+0

예. 나는 이것을 브레이크 포인트에 넣음으로써 테스트했으며 컨트롤러에서 올바른 메소드를 호출하고있다. – samack

+0

@Marc - 기본적으로'@ Html.BeginForm()'은 같은 액션으로 되돌아갑니다. 따라서이 경우 매개 변수가 필요 없습니다. – RPM1984

답변

2

아마 루프 때문에 모델 바인딩이 시작되지 않을 것입니다.

내가 알고 있듯이, 이되어야하지만 제대로 작동하고 작업 할 확률이 더 높습니다.

대신 편집기 템플릿을 사용해보십시오.

/EditorTemplates/Visit.cshtml

@model TheWallSite.ObjectModels.Visit 
<tr><td>@Html.DisplayFor(model => model.InOutTime)</td></tr> 
<tr><td>@Html.DisplayFor(model => model.VisitType)</td></tr> 
<tr><td>@Html.DisplayFor(model => model.VisitName)</td></tr> 
<tr><td>@Html.DisplayFor(model => model.IP)</td></tr> 
<tr><td>@Html.DisplayFor(model => model.SSO)</td></tr> 
<tr><td>@Html.EditorFor(model => model.ValidVisit)</td></tr> 

홈페이지보기 : 즉 완전한 뷰의 경우

@model TheWallSite.ObjectModels.Visits 

@{ 
    ViewBag.Title = "Potential invalid visits!"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
@using (Html.BeginForm()) 
{ 
     <fieldset> 
     <table> 
      <tr> 
       <th>Check In/Out Time</th> 
       <th>Visit Type</th> 
       <th>In/Out</th> 
       <th>IP</th> 
       <th>SSO ID</th> 
       <th>Valid Visit</th> 
      </tr>     
      @Html.EditorFor(model => model.Visits) 
     </table> 
     <input type="submit" value="Submit" /> 
     </fieldset> 
} 

또한, 당신은하지 않는 작업에 FormCollection 매개 변수가 필요하지 않습니다 숨겨진 필드/내가 볼 수없는 다른 마법 필드가 있습니다.

+1

나는 kool-aid를 마셨다. 고마워요. – samack

+0

@samack - hehe nice. 이것을 교훈으로 삼으십시오. 루프는 악합니다. :) 그들은 단순히 MVC 뷰에서 요구되지 않습니다. – RPM1984

관련 문제

 관련 문제