我有一个模型,我可以正确绑定显示的目的,但我不能发布更新的版本。ASP.Net MVC模型绑定
我可以在强类型视图中以更新的形式显示页面及其内容列表。
但是,当我发布更新后的模型,即如果我更改了pagecontents内容,则发布的模型包含Pages细节,但失去了页面和pagecontent之间的关系。
所以当我得到页面的显示目的扩展PageContents页面包含正确的deatils。
但是,当我更新和Post PageContents不包含页面条目。
(顺便说一句可能是一个红色的鲱鱼,但我使用功能NHibernate)
不幸的是我无法找到我错过了什么。
因此,这里是我的代码的删节版:
public class Page
{
public virtual int Id { get; private set; }
public virtual string Name { get; set; }
public virtual string Title { get; set; }
public virtual IList<PageContent> PageContents { get; private set; }
public Page()
{
PageContents = new List<PageContent>();
}
public virtual void AddPageContent(PageContent pageContent)
{
pageContent.Page = this;
PageContents.Add(pageContent);
}
}
public class PageContent
{
public virtual int Id { get; private set; }
public virtual string Name { get; set; }
public virtual string Description { get; set; }
public virtual string Content { get; set; }
public virtual Page Page { get; set; }
}
Page <%= Html.LabelFor(model => model.Title) %>:
<%= Html.TextBoxFor(model => model.Title, new { @class = "wide-input" })%>
<%= Html.ValidationMessageFor(model => model.Title) %>
Page <%= Html.LabelFor(model => model.Name) %>:
<%= Html.TextBoxFor(model => model.Name, new { @class = "wide-input" })%>
<%= Html.ValidationMessageFor(model => model.Name) %>
<%
foreach (var item in Model.PageContents)
{
%>
<%= Html.TextAreaFor(m => item.Content) %>
<%
}
%>
<p><input type="submit" value="Save" /></p>
<% } %>
感谢您的回复 - 我将我的代码更改为以下代码<%= Html.TextArea(string.Format(“PageContents [{0}]。Content”,i),Model.PageContents [i] .Content )%>但问题仍然相同。当控制器收到页面时,页面包含一系列PageContents,为了所有意图和目的都是新的,并且它们不包含返回Page的引用。 – 2010-08-17 10:42:59
是的,我会沿着ViewModel路线走。我想我陷入了一些双重思考! – 2010-08-17 13:38:16