모델 바인딩을 양식의 하위 클래스에 가져 오려고합니다.asp.net mvc 및 하위 개체가있는 모델 바인딩 개체
관련된 PageContent 클래스가있는 Page 클래스가 있습니다. Page 오브젝트에는 많은 PageContent 오브젝트가 있습니다. ie Page.PageContents
Page를 모델로 반환하고 모든 PageContent 항목을 볼 수 있습니다.
그러나 모델 바인딩을 유지할 수 있도록 양식에 PageContent 항목을 할당하는 방법에 대해 약간 모호합니다.
페이지 모델을 다시 컨트롤러에 게시 할 때 PageContent 목록이 비어 있습니다. 내가 제대로 형태의 PageContents 측면을하지 않은 생각하고
<% using (Html.BeginForm("SavePage", "Admin")) {%>
<fieldset>
<legend>Fields</legend>
<%=Html.Hidden("PageId", Model.PageId) %>
<p>
<label for="Title">Title:</label>
<%= Html.TextBox("Title", Model.Title) %>
<%= Html.ValidationMessage("Title", "*") %>
</p>
<p>
<label for="SysName">SysName:</label>
<%= Html.TextBox("SysName", Model.SysName) %>
<%= Html.ValidationMessage("SysName", "*") %>
</p>
<%
int i = 0;
foreach (var pageContent in Model.PageContents)
{ %>
<div>
<%=Html.Hidden("PageContents[" + i + "].PageContentId", pageContent.PageContentId) %>
<%=Html.TextArea("PageContents[" + i + "].Content", pageContent.Content)%>
</div>
<%
i++;
} %>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
<% } %>
: 여기
양식의 조각입니다. 편집: 나는
도와주십시오으로 Request.Form 스타일을 사용하지 않는
public ActionResult SavePage(Page page)
{
// do stuff with page.PageContents
return View("PageEdit", page);
}
: 여기 내가가 POST 기본 컨트롤러 방법 D
컨트롤러에서 게시 방법은 어떻게 보이나요? –
Page.PageContents의 유형은 무엇입니까? 그것은 IList 또는 PageContent []입니까? 배열에 바인딩 할 수 없었습니다. –
Max
나는 직접 DBML 자동 어구를 사용하고있다. 그래서 그것의 EntitySet <> : 엔티티 세트 Page.PageContents –