【发布时间】:2009-11-27 19:52:01
【问题描述】:
我正在尝试让模型绑定表单中的子类。
我有一个带有相关 PageContent 类的 Page 类。 Page 对象中有许多 PageContent 对象。 即Page.PageContents
我将 Page 作为模型返回,我可以看到所有 PageContent 项。
但是我对如何将 PageContent 项分配给表单有点模糊,以便保持它的模型绑定。
当我将 Page 模型发布回控制器时,PageContent 列表为空。
这是一个sn-p的形式:
<% 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>
<% } %>
我认为我没有正确地制作表单的 PageContents 方面。
编辑: 这是我发布到的基本控制器方法:
public ActionResult SavePage(Page page)
{
// do stuff with page.PageContents
return View("PageEdit", page);
}
我没有使用 Request.Form 样式
请帮忙:D
【问题讨论】:
-
你的控制器中的 post 方法是什么样的?
-
Page.PageContents 的类型是什么?它是 IList
还是 PageContent[] ?我从来没有能够绑定到一个数组。 -
我正在使用直接的 DBML 自动魔法类。所以它是一个 EntitySet:EntitySet
Page.PageContents
标签: asp.net-mvc