在ASP.Net MVC 1.0中如何插入模型子数据?

时间:2009-03-31 18:08:33

标签: asp.net-mvc datagrid

我第一次玩MVC并遇到问题。

假设我有两张桌子 - 人和位置。位置与人的外键关系 - 因此1个人可以有多个属于他们的位置。

在我看来,我有Person字段的表单输入 - 这很好用。

但是,我还希望有一个网格来保存位置(使用标准的“添加/删除”按钮),以及与“位置”网格中当前记录相关联的主 - 详细信息表单输入。

我的问题是如何在视图中实现子关系网格和表单输入?

1 个答案:

答案 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")%>&nbsp;
            <%=Html.Button("Cancel", "Cancel", HtmlButtonType.Button,"javascript:cancelEdit();") %>
        </td>
    </tr>
</table>
<%=Html.AntiForgeryToken() %>
<%}%>