从DropDownList中保存外键中的数据?

时间:2016-03-08 21:53:41

标签: c# database asp.net-mvc-4 foreign-keys code-first

我在asp.net mvc代码第一个应用程序中有这两个模型

public class Site
{
    public int Id { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Turbine> Turbines { get; set; }
}

public class Turbine
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }

    public virtual Site Site { get; set; }
}

在Turbine视图中,我想显示所有站点的下拉列表。发布表单并将下拉列表中的选定值(站点)保存为Turbine表中的外键。

我在控制器中有Get

ViewBag.Sites = new SelectList(db.Sites, "Id", "Name");
return View(db.Turbines.ToList());

这是我在表格帖子中的Turbine视图

@Html.DropDownListFor(m => m.Site.Id, (IEnumerable<SelectListItem>)ViewBag.Sites, "Select", new { @class = "form-control" })

这是我的帖子控制器

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Id,Name,Site")] Turbine turbine)
{
    if (ModelState.IsValid)
    {

        db.Turbines.Add(turbine);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    return View(turbine);
}

IdName已正确保存在Turbine表格中。但是我在Id表中得到一个新的行Site(rest为null),并且在Turbine表中得到与外键相同的Id。

我想在创建新Turbine时列出DropDownList中的所有站点,并将该Id(它是Site表中的主键)保存为Turbine表中的外键。当我创建一个新的Turbine时,我不想在Site表中创建一个新行,我想使用Site表中的现有Id。

0 个答案:

没有答案