내가하려는 것은 다소 기본이지만 내 사실이 섞여있을 수 있습니다. 모델로 사용자 정의 클래스가있는 세부 정보 페이지가 있습니다. 사용자 정의 클래스는 2 개의 사용자 정의 객체를 사용하며 또 다른 사용자 정의 객체는 2 중 하나의 속성을 사용합니다. 세부 정보 페이지는 상당한 양의 정보를 출력하지만 사용자가 주석을 게시 할 수 있습니다.asp.net mvc에서 2 개의 사용자 지정 개체를 사용하는 사용자 지정 모델 개체로 양식 컬렉션을 다시 바인딩하는 방법은 무엇입니까?
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Details(VideoDetailModel vidAndComment) { ....}
게시 된 양식의 유일한 필드 CommentText 및 동영상 ID 있습니다 : 사용자가 포스트 버튼을 클릭하면 페이지는 다음과 같이 뭔가를 보이는 세부 정보 표시 작업에 게시됩니다. 다음은 VideoDetailModel의 모습입니다.
VideoDTO에는 몇 가지 속성이 있지만 필요한 것은 VideoId입니다. CommentDTO의 적절한 속성에는 CommentText (올바르게 게시 됨) 및 userId 속성이 포함 된 UserDTO 객체가 포함됩니다. CommentText 값 이외의 모든 것은 게시되지 않습니다. 또한 ascx 페이지에 다음 줄이 있지만 모델 값은 컨트롤러에 게시되지 않습니다.
Html.Hidden("Model.Video.VideoId", Model.Video.VideoId);
여기에 무엇이 누락되어 있는지 잘 모르겠습니다. 나는 내가 필요한 속성을 위해 더 많은 양식 필드를 추가하면 게시 될 것이라고 생각하지만, CommentText에 대한 양식 입력 필드가 하나만 필요합니다. 페이지에 게시 된 동일한 Model 객체 값을 페이지에 게시하면 도움이됩니다.
여기에서 필요한 설명을 드리겠습니다. 나는 지금 무슨 일이 벌어지고 있는지를 놓치고있다. 이 솔루션은 오히려 간단처럼
UPDATE
좋아, 그것은 보인다. 폼의 중간에서 RenderPartial을 사용하는 것은 어떻게 든 폼이 html로 작성되는 방법에 문제가 있다고 생각합니다. 나는 정말로 사물을 왜 그리웠는지에 관해서는 손가락질 할 수는 없지만, 내 양식 전에 RenderPartial을 만든 다음 텍스트 입력 필드와 숨겨진 VideoId로 양식을 시작하면 기본 ModelBinder가 정상적으로 작동합니다. 양식을 시작하고 숨겨진 VideoId를 작성하고 여러 부분보기를 렌더링하고 내 CommentText 필드를 만든 다음 양식을 닫았습니다. CommentText 필드는 괜찮은 바인딩됩니다. 숨겨진 VideoId는 그렇지 않습니다. 어쩌면 RenderPartial 사용에 대한 어딘가의 규칙을 놓친 것 같습니다.
완성을 위해, 내가 렌더링 한 부분 뷰는 Comment 객체를 가져 와서 CommentText 데이터를 썼습니다. 이러한 객체 중 일부는 단일 Video 객체에 대해 존재합니다. 이 데이터는 모두 사용자 정의 유형이며 Model (모델)로 View (기본보기)로 전달되었습니다. 이 부분보기에는 양식이 없으며 데이터 입력 필드가 없습니다.
숨겨진 필드 ID에만 "Video.VideoId"가 필요하다고 생각합니다. – Ryan