4

MVC3을 처음 사용합니다.HttpPost에서 MVC3을 사용하여 중첩 모델을 바인딩합니다.

양식에 제출 단추가 있는데 내부에 여러 속성이 포함 된 2-3 개의 중첩 개체 모델이있는 모델을 바인딩하고 싶습니다.

EditorFor를 사용하지 않고 이러한 중첩 된 객체를 바인딩하는 방법이 있습니까? 그래서 내가 폼을 제출할 때 숨겨진 값이나 폼을 html로 구현할 필요없이 반환되는 모델에서 ActionResult (Object model), 값이 중첩 된 객체 모델을 취할 것입니다.

+0

내 솔루션 사용해보기 https://stackoverflow.com/questions/47644699/how-to-bind-nested-objects-on-httppost-in-asp-net-mvc/47645228#47645228 –

답변

0

기본적으로 모델을 다시 식별 할 수있을만큼 충분한 값이 필요합니다. 따라서 숨겨진 필드의 ID와 변경하려는 모든 속성을 사용할 수 있습니다. 모델을 다시 만들려면 기본 매개 변수를 통해 ID 및 변경된 값을 컨트롤러 조치에 전달하거나 해당 상황을 처리하는 가장 좋은 방법 인 model-binder-IMHO를 작성하십시오.

2

DefaultModelBinder은 규칙에 따라 작동하므로 양식 필드는 MVC 명명 규칙을 따라야합니다.

양식을 만들 때 EditorForModel을 사용하지 않으려면 모든 필드에 대해 고유 한 이름 지정 규칙을 구현하고 각 요소에 대해 ViewData.TemplateInfo.HtmlFieldPrefix을 설정해야합니다. 그런 다음 사용자 정의 ModelBinder를 작성하여 리턴 된 양식을 가져와 이름 지정 규칙에 따라 모델에 바인드해야합니다.

이것은 MVC3에 몇 가지 다른 문제를 만듭니다. 가장 중요한 점은 DropDownLists 및 일부 다른 항목에 대한 눈에 띄지 않는 유효성 검사 렌더링이 실패 할 수 있다는 것입니다.

일반적으로보기에서 EditorForModel을 사용하고 MVC의 기존 규칙을 사용하여 작업하는 것이 가장 좋습니다. 각각의 중첩 된 모델에 특정한 뷰를 생성 할 수 있습니다. Brad Wilson은 this article에서 프로세스에 대한 개요를 제공합니다.

관련 문제