> 백엔드 개발 > C++ > ASP.NET MVC 4에서 목록을 사용하여 모델 바인딩을 효과적으로 처리하는 방법은 무엇입니까?

ASP.NET MVC 4에서 목록을 사용하여 모델 바인딩을 효과적으로 처리하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2025-01-03 09:32:39
원래의
738명이 탐색했습니다.

How to Effectively Handle Model Binding with Lists in ASP.NET MVC 4?

MVC 4의 목록에 모델 바인딩

항목의 IList를 뷰에 바인딩하려고 하면 HttpPost 메서드에 문제가 발생할 수 있습니다. Phil Haack의 기사와 같은 유용한 리소스가 존재하지만 MVC 4의 잠재적 업데이트를 반영하지 않을 수 있습니다. 이 문제를 해결하려면 자세한 솔루션을 살펴보겠습니다.

ViewModel 구성

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿