【发布时间】:2011-04-20 01:59:34
【问题描述】:
如果有几个我试图通过表单编辑的 linqTOsql 对象。
首先,有 Stream 类:
[Table]
public class Stream
{
[HiddenInput(DisplayValue = false)]
[Column(IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert)]
public long StreamID { get; set; }
/*other properties removes for brevity*/
// relationship (one stream to many Stream2FieldTypes)
// uses EntitySet<Stream2FieldTypes> and OtherKey for the FK in Stream2FieldTypes
private EntitySet<Stream2FieldTypes> _Stream2FieldTypes;
[System.Data.Linq.Mapping.Association(Storage = "_Stream2FieldTypes", OtherKey = "StreamID")]
public EntitySet<Stream2FieldTypes> Stream2FieldTypes
{
get { return this._Stream2FieldTypes; }
set { this._Stream2FieldTypes.Assign(value); }
}
}
然后是 Stream2FieldTypes 类:
[Table]
public class Stream2FieldTypes
{
[Column(IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert)]
public long s2fID { get; set; }
/*other properties removed for brevity*/
[Column]
public long StreamID { get; set; } // FK
// relationship (one Stream2FieldTypes to Streams)
private EntitySet<Stream> _Stream;
[Association(Storage = "_Stream", ThisKey = "StreamID")]
public EntitySet<Stream> Stream
{
get { return this._Stream; }
set { this._Stream.Assign(value); }
}
}
我使用 linqTOsql 存储库来获取这些对象并将它们发送到这样的视图:
public ActionResult StreamEdit(long id)
{
Genesis.Domain.Entities.Stream stream = genesisRepository.Streams.FirstOrDefault(x => x.StreamID == id);
return View(stream);
}
一切都毫无问题地发送到视图...但是当视图上的表单被提交时,Stream.Stream2FieldTypes 由于某种原因丢失了。我通过此操作捕获表单提交:
[HttpPost]
public ActionResult StreamEdit( long id, Genesis.Domain.Entities.Stream form)
{
return View(form);
}
视图没有Stream2FieldTypes 集合。
视图正在编写这样的 Stream2FieldTypes:
<% for (int i = 0; i < (Model.Stream2FieldTypes != null ? Model.Stream2FieldTypes.Count() : 0); i++) %>
<% { %>
<div class="ListItem">
Label: <%: Html.EditorFor(x => x.Stream2FieldTypes[i].s2fLabel, new { style="width:100px" })%>
Required: <%: Html.EditorFor(x => x.Stream2FieldTypes[i].s2fIsRequired)%>
Field Type ID": <%: Html.EditorFor(x => x.Stream2FieldTypes[i].FieldTypeID, new { style="width:20px;" })%>
Stream ID: <%: Html.EditorFor(x => x.Stream2FieldTypes[i].StreamID) %>
</div>
<% } %>
为什么 mvc 中的默认模型绑定器没有正确绑定嵌套集合?
【问题讨论】:
标签: c# asp.net-mvc linq-to-sql asp.net-mvc-2 forms