我第一次玩MVC并遇到问题。
假设我有两张桌子 - 人和位置。位置与人的外键关系 - 因此1个人可以有多个属于他们的位置。
在我看来,我有Person字段的表单输入 - 这很好用。
但是,我还希望有一个网格来保存位置(使用标准的“添加/删除”按钮),以及与“位置”网格中当前记录相关联的主 - 详细信息表单输入。
我的问题是如何在视图中实现子关系网格和表单输入?
答案 0 :(得分:1)
您可以使用其自己的“添加/保存/提交”按钮为该位置添加另一个表单。因此,当从Person表单发生submssion时,它将更新Person记录,但如果从Location表单发生提交,它将执行相应的操作。
像这样:
// person data
<table>
<tr><td>Name:</td><td><%=Model.PersonName%></td></tr>
<tr><td>Title:</td><td><%=Model.PersonTitle%></td></tr>
<tr><td>Other Info:</td><td><%=Model.PersonOtherInfo%></td></tr>
</table>
// person's locations grid
<table>
<tr><th></th><th></th></tr>
<% foreach (Location loc in Model.PersonLocations) { %>
<tr><td>Delete</td><td><%=loc.LocationName%></td></tr>
<% } %>
</table>
// new location form
<% using (Html.BeginForm<MyController>(p => p.New())) { %>
<table>
<tr>
<td>Location Name</td>
<td><%=Html.TextBox("LocationName")%></td>
</tr>
<tr>
<td colspan="2">
<%=Html.SubmitButton("Save", "Save")%>
<%=Html.Button("Cancel", "Cancel", HtmlButtonType.Button,"javascript:cancelEdit();") %>
</td>
</tr>
</table>
<%=Html.AntiForgeryToken() %>
<%}%>