如果在模型中我有“导航属性”,如何将数据插入数据库(SQL Server)?

时间:2011-12-10 19:42:45

标签: linq-to-sql asp.net-mvc-2

我在asp.net mvc2中有这样的模型:

enter image description here

例如:我如何在表RouteDetails中插入数据?在db中有一个名为RouteId的字段(与表Route有关系)

在控制器中我写了这段代码:

[HttpPost]
public ActionResult AddSt(RouteDetail rd)
{
   try
   {
      if (ModelState.IsValid)
      {
         db.AddToRouteDetail(rd);
         db.SaveChanges();
         return RedirectToAction("Index");
      }
   }
   catch (Exception e)
   {
      ModelState.AddModelError("Error!", e);
   }
   return View(rd);
}

并查看:

<% using (Html.BeginForm("AddSt","Route")) {%>
        <%= Html.ValidationSummary(false) %>

        <fieldset>
            <legend>Fields</legend>

            <div class="editor-label">
            </div>
            <div class="editor-field">
                <%= Html.TextBoxFor(model => model.Route.RouteId) %>
                <%= Html.TextBoxFor(model => model.Station)%>
                <%= Html.TextBoxFor(model => model.StationId) %>
            </div>

            <p>
                <input type="submit" value="Create" />
            </p>
        </fieldset>
    <% } %>

但这不起作用(如果我没有关系,一切都好,但在我的情况下一切都很糟糕。)

为什么我不能轻易写出模型=&gt; model.RouteId?

1 个答案:

答案 0 :(得分:0)

乍一看,看起来你的问题就在这里

 <%= Html.TextBoxFor(model => model.Route.RouteId) %>

这意味着您正在尝试创建一个新的路由对象,我不相信您正在尝试这样做。看起来您想要将Route Detail添加到现有路线。

尝试将Route拉出数据库,将Route Detail添加到RouteDetails集合,然后保存Route对象。