항목의 IList를 뷰에 바인딩하려고 하면 HttpPost 메서드에 문제가 발생할 수 있습니다. Phil Haack의 기사와 같은 유용한 리소스가 존재하지만 MVC 4의 잠재적 업데이트를 반영하지 않을 수 있습니다. 이 문제를 해결하려면 자세한 솔루션을 살펴보겠습니다.
public class MyViewModel { public List<Person> Persons{get;set;} }
@model MyViewModel @for( int i = 0; i < Model.Persons.Count(); ++i) { @Html.HiddenFor(m => m.Persons[i].PersonId) @Html.EditorFor(m => m.Persons[i].FirstName) @Html.EditorFor(m => m.Persons[i].LastName) }
[HttpPost]public ViewResult(MyViewModel vm) { ... }
입력 필드가 있는 속성만 포스트백 후에 값을 갖게 됩니다. 또한 MVC의 모델 바인딩은 연속된 ID만 인식합니다. 항목이 조건부로 숨겨진 다음 예를 생각해 보세요.
@for( int i = 0; i < Model.Persons.Count(); ++i) { if(i != 4)//conditionally hide 5th item, { //but BUG occurs on postback, all items after 5th will not be bound to the the list @Html.HiddenFor(m => m.Persons[i].PersonId) @Html.EditorFor(m => m.Persons[i].FirstName) @Html.EditorFor(m => m.Persons[i].LastName) } }
이 경우 처음 4개 항목만 포스트백에 바인딩됩니다. 이를 방지하려면 IList의 모든 항목에 대해 연속 ID를 확인하세요.
위 내용은 ASP.NET MVC 4에서 목록을 사용하여 모델 바인딩을 효과적으로 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!