【发布时间】:2016-06-16 07:14:01
【问题描述】:
以下剃须刀
@Html.DropDownList("FloorId", null)
或
@Html.DropDownListFor(model => model.FloorId, null)
使用外键从我的实体框架模型中选取选择列表项。在外国实体中,我碰巧有一个名为Name 的属性用于Text,Id 用于Value。
这似乎是巫术。
这是如何连接的?有什么要遵守的约定吗?我拥有Id 和Name 属性是纯粹的运气吗?
我可以在控制器中看到ViewBag 添加了选择列表,但没有将选择列表添加到下拉列表中;除了让Id 匹配ViewBag 属性。
编辑以添加模型
public class Floor
{
public int Id {get;set;}
public string Name { get; set; }
}
public class Room
{
public int Id { get; set; }
public string RoomName { get; set; }
[ForeignKey("Floor")]
public int FloorId { get; set; }
public virtual Floor Floor { get; set; }
}
如果你用脚手架,控制器有:
ViewBag.FloorId = new SelectList(db.Floor, "Id", "Name", room.FloorId);
还有上面的剃刀。我只能假设,如果没有将SelectList 分配给DropDownList 或DropDownListFor,它将回退并使用同一Id 的ViewBag 属性作为它的选择列表?
【问题讨论】:
-
您能否展示相关的实体类,您实际如何调用
DropDownList(For)以及生成的HTML 是什么样的? -
@CodeCaster 它实际上是在 Visual Studio 中搭建的,没有添加任何其他内容。我将添加要展示的模型
-
是的,但我从未见过
@Html.DropDownList从无处抓取随机实体。我的意思是,如果您可以花更多的精力先完成问题,为什么还要花费 200 声望。 :)
标签: c# asp.net-mvc razor entity-framework-6