UpdateModel이 "깊은"속성을 업데이트하지 않습니다.
-
28-10-2019 - |
문제
ASP.NET MVC 응용 프로그램이 있습니다. 특정 시점에서 모델을 업데이트하는 데 사용하려는 Controller 메서드에서 FormCollection을 얻습니다. 컬렉션에서 모든 값이 해당 모델의 속성은 아니며 업데이트 할 속성은 목록의 항목이며 해당 목록도 다른 목록의 항목입니다. 다음과 같은 것 (이것이 분명하길 바랍니다) : 라코 디스
컨트롤러에서 시도했습니다 : 라코 디스
문제는 이것이 작동하지 않는다는 것이며 반사가 작동하지 않는다는 사실과 관련이 있다고 가정합니다. 검색을하다가 이 도움말 . 따라서 접두사 매개 변수를 사용하면 문제가 해결된다는 것을 이해합니다. 그러나 내 경우에는 속성이 목록의 항목으로 모델에서 "더 깊은"위치에 있기 때문에 그렇지 않습니다.
이 문제를 해결할 수있는 사람이 있습니까?
업데이트 :
속성에 대한 EditorTemplate은 다음과 같습니다. 라코 디스
이 템플릿의 이름은 다음과 같습니다. 라코 디스
이 코드로 충분합니까 아니면 아직 누락 된 것이 있습니까?
업데이트 2 :
좋아, 모든 하위 속성에서 매개 변수없는 생성자를 정의했고 이제 다음을 호출합니다. 라코 디스
이것은 모델을 업데이트하지만 MaterialRequirements의 모든 것이 다시 인스턴스화됩니다 ... : S
해결책
UpdateModel은 "Deep properties"에서 잘 작동합니다.
문제는 아마도 수집 한 데이터가 속성 이름과 같지 않다는 것입니다.
페이지에서 얻은 값을 보려면 3 곳을 확인하세요.
-
양식 값.
-
경로 데이터
-
검색어 문자열
정확한 순서
키 는 속성 이름 을 모델링 할 때 일치 해야합니다. <시간>
업데이트 :
속성 이름에 키를 일치시키는 방법은 무엇입니까?
입력 ID는 얻을 수있는 키가되고, 속성 이름과 일치하도록 ID를 변경하거나, HtmlTextBoxFor 도우미 : 이 문서 :
다른 팁
평탄화 된 ViewModel을 만든 다음이를 사용하여보기를 채운 다음 나중에 실제 모델과 동기화해야합니다.
모델과 뷰를 보여줄 수 있습니까? htmlhelper를 사용하지 않는 경우 모델 바인딩이 모델과 작동하도록하려면 명명 규칙을 잘 이해해야합니다.첫 번째는 모델과 뷰를 보여주는 것입니다.