gpt4 book ai didi

.NET MVC4 DropDownListFor 使用外键行为异常

转载 作者:行者123 更新时间:2023-12-04 05:28:03 26 4
gpt4 key购买 nike

首先,我是 .NET MVC 的新手,虽然我以前使用过一般的 MVC 想法。我正在使用 .NET MVC4 和 CodeFirst 使用 Entity Framework 。

我正在尝试向“创建” View 添加一个简单的下拉列表,以允许用户选择与另一个模型相关的外键。

这是相关的代码:

从 View (PropertyProgram/Create):

<div class="editor-field">
@Html.DropDownListFor(model => model.Program.ID, new SelectList(ViewBag.Programs, "Id","Name"));
@Html.ValidationMessageFor(model => model.Program.ID);
</div>

从 Controller (PropertyProgramController):
public ActionResult Create()
{
ViewBag.Programs = db.Programs;
return View();
}

从模型(PropertyProgram):
public class PropertyProgram
{
public int Id { get; set; }
public virtual Program Program { get; set; }
}

View 工作正常,下拉列表中显示正确的数据,但由于某种原因,发布后,在数据库的 Program 表中创建了一个新行,除了 ID 之外的所有字段都为空。预期行为是创建的 PropertyProgram 行将下拉列表中选择的 Program ID 放入数据库的 Program_ID 列中。知道为什么这不像预期的那样吗?

最佳答案

当然在我写完这个问题十分钟后,我找到了答案!所以显然在 Entity Framework 中,只有一个虚拟链接是不够的,你还必须有一个指向表的 ID。我只是将这行代码添加到 PropertyProgram 模型中:

public int ProgramId { get; set; }

添加后,我创建了一个迁移,然后我将下拉代码更改为:
@Html.DropDownListFor(model => model.ProgramId, new SelectList(ViewBag.Programs, "Id", "Name"));

在此之后,一切正常!我不是 100% 确定为什么这个固定的东西,但确实如此。如果有人愿意解释原因,我将不胜感激。

关于.NET MVC4 DropDownListFor 使用外键行为异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12960416/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com