ASP.NET MVC,SImple跨父子LINQ2SQL实体创建页面

时间:2009-04-22 06:00:52

标签: asp.net-mvc

我有一个简单的结构

小工具(父级表)

  • id(IDENTITY)

  • 标题

WidgetChild(子表)   -

  • id(widget.id的外键)
  • 含量

在我的视图中,我有一个捕获标题的字段,另一个捕获内容值的字段。

 <%= Html.TextBox("title") %>

 <%= Html.TextBox("content") %>

如何连接我的控制器以先在Widget中插入一个新条目然后在WidgetChild中插入一个条目?我不知道该怎么做...我是否传递一个FormCollection实例,手动实例化Widget实例并传入值?或者我可以以某种方式使用UpdateModel()?我不熟悉UpdateModel如何绑定我的表单值,特别是如果它们跨越多个表/类。

2 个答案:

答案 0 :(得分:1)

您可以在此处使用自动模型绑定。

使用这样的表格:

<%using(Html.BeginForm("Update", "Home")) {%>
    <%=Html.TextBox("widget.Title") %>
    <%=Html.TextBox("childWidget.Content") %>
    <input type="submit" value="Submit" />
    <%} %>

您的控制器可能如下所示:

public ActionResult Update(Widget widget, WidgetChild childWidget)
{
  // do whatever with the objects here
}

对象将具有填充表单中的属性(widget的标题和childWidget的Content) - 然后您可以将这些对象相互关联,并以正常方式将它们保存到linq到sql数据上下文。 / p>

答案 1 :(得分:0)

您需要根据数据库结构区分两个进程。您可以使用向导步骤。检查此link

第二种方法是手动完成。 就像在页面提交上一样,你将获得所有接受动词的动作方法中的页面数据,对吧。现在,您可以在父表中输入填充必填字段,然后立即获取相同记录以获取主键。最后,您可以使用父表ID在子表中输入数据。

你不觉得这个过程很头疼!最好在另一个视图中添加子内容,您可以在其中显示widget父级的下拉列表,然后添加内容。