我有一个简单的结构
小工具(父级表)
id(IDENTITY)
标题
WidgetChild(子表) -
在我的视图中,我有一个捕获标题的字段,另一个捕获内容值的字段。
<%= Html.TextBox("title") %>
和
<%= Html.TextBox("content") %>
如何连接我的控制器以先在Widget中插入一个新条目然后在WidgetChild中插入一个条目?我不知道该怎么做...我是否传递一个FormCollection实例,手动实例化Widget实例并传入值?或者我可以以某种方式使用UpdateModel()?我不熟悉UpdateModel如何绑定我的表单值,特别是如果它们跨越多个表/类。
答案 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父级的下拉列表,然后添加内容。