2016-12-20 3 views
0

컨트롤러 체크인 모델의 목록을 가져옵니다 true 및 false 값이 검사 된 행에 적용됩니다. 나는 그것이 FormCollection 때문에 인 것을 읽었다. 질문 : 대신 GetChecked을 매개 변수로 사용하여 IEnumerable<Models.Entry>을 사용할 수 있습니까? 내가 그것을 시도했을 때 그것은 null 값이되었다.컨트롤러

+0

@model 문 다음에 []이 있습니까? 전에 거기서 사용 된 것을 본 적이 없습니다. – VisualBean

답변

0

당신은 변경해야한다 :

  • 등을 CheckBoxFor, EditorFor를 사용하여 목록 또는 배열에서 컨트롤을 렌더링 을 사용하지 마십시오 foreach- 대신 항상 for -loop을 사용하고 컬렉션에 색인을 적용하십시오. 색인을 생성하면 <form>의 번호가 지정된 항목이 만들어지며 더 이상 서로 충돌하지 않으므로 번호가 매겨진 항목은 제출 된 값 목록을 처리하는 데 필요한 항목과 정확하게 일치합니다. 간단한 예를 보려면이 대답을 참조하십시오. FormCollection을 사용하지 말고 대신 ViewModel 클래스를 사용하십시오. https://stackoverflow.com/a/15375949/1220550

  • FormCollection을 사용하면 Databinding/ModelState/ValidationSummary을 포기하고 함께 ASP.NET MVC의 뛰어난 기능을 사용할 수 있습니다. 이 모든 것을 여기에서 설명하기에는 너무 많지만 정확히 여기서는 great link입니다.

  • 데이터 바인딩 (이전 참조)뿐만 아니라 일관성과 사용 용이성을 위해 완전히 정의 된 ViewModel 클래스를 사용하는 것이 가장 좋습니다. 배열IEnumerable<X> 인 경우는 @model이 가장 혼란스럽고 오류가 발생할 수 있습니다. 갑자기 int도 전달하려면 어떻게해야합니까? IEnumerable<X>[]으로 불가능합니다. 아직 ViewModel이있는 케이크 조각입니다. 그냥 클래스에 추가하십시오.

+0

나는 그 모든 것을 지금했다. 그리고 그것은 잘 작동한다, 대단히 =). – mdc