객체 목록의 MVC 모델 바인딩 문제 해결
이 문서에서는 MVC 애플리케이션의 일반적인 문제인 모델 바인더가 양식 데이터의 개체 목록을 올바르게 채우지 못하는 문제를 다룹니다. 겉으로는 올바른 양식 제출에도 불구하고 증상은 컨트롤러 작업에 null 목록이 있습니다.
근본 원인: 인덱스 누락
핵심 문제는 양식 요소에 색인이 없다는 것입니다. 인덱스가 없으면 모델 바인더는 목록 내의 개별 요소를 구별할 수 없습니다. 예를 들어 다음 시나리오를 생각해 보세요. 양식에는 처음에 고유 식별자가 없는 요소가 포함되어 있습니다.
<code><!-- Incorrect: Missing indices --></code>
해결책: EditorTemplate 활용
이 해결 방법은 EditorTemplate을 사용하여 올바르게 색인된 양식 요소를 자동으로 생성하는 것입니다. 이렇게 하면 수동 인덱싱이 필요 없으며 적절한 모델 바인딩이 보장됩니다.
구현 단계:
EditorTemplates 폴더 만들기: Views 폴더 내에 "EditorTemplates"라는 새 폴더를 만듭니다. 이 폴더는 다른 보기 파일과 동일한 디렉토리 내에 있어야 합니다.
강력한 유형의 뷰 생성: EditorTemplates 폴더 내에서 모델 클래스와 이름이 일치하는 강력한 유형의 뷰 파일을 생성합니다(예: PlanCompareViewModel.cshtml
).
부분 보기 콘텐츠 마이그레이션: 원본 부분 보기의 HTML 콘텐츠를 새로 생성된 EditorTemplate으로 이동합니다.
EditorForModel()
활용: EditorForModel()
도우미 메서드를 사용하도록 상위 뷰를 수정하세요. 이 도우미는 모델을 기반으로 올바르게 인덱싱된 양식 요소를 자동으로 렌더링합니다.
<code class="language-csharp">@model IEnumerable<plancompareviewmodel> @using (Html.BeginForm("ComparePlans", "Plans", FormMethod.Post, new { id = "compareForm" })) { <div> @Html.EditorForModel() </div> }</code>
이 접근 방식을 사용하면 모델 바인더가 컨트롤러 작업의 개체 목록을 올바르게 해석하고 채웁니다. EditorForModel()
도우미는 각 요소에 필요한 인덱스를 동적으로 생성하여 바인딩 문제를 해결합니다.
위 내용은 내 MVC 모델 바인더가 양식의 개체 목록을 채우지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!