这让我发疯,我已经研究过StackOverflow上的相关帖子。
基本上我有2个表,Album和Genre,前者有Genre的外键。我在EF5中使用Model First对其进行了建模,并使用MS的T4生成器生成了上下文和类文件。因此,我的域名类代码是:
{
using System;
using System.Collections.Generic;
public partial class Album
{
public int Id { get; set; }
public string Title { get; set; }
public decimal Price { get; set; }
public string AlbumArtUrl { get; set; }
public int GenreId {get; set;}
public virtual Genre Genre { get; set; }
}
}
您会注意到我添加了:
public int GenreId {get; set;}
根据指导,以使脚手架能够在控制器中的视图和“SelectList”代码中创建下拉列表。但事实并非如此!但它确实在视图中创建:
<div class="editor-label">
@Html.LabelFor(model => model.GenreId)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.GenreId)
@Html.ValidationMessageFor(model => model.GenreId)
</div>
所以我真的很困惑。任何想法都将不胜感激。
谢谢,
版
P.S。我正在使用ASP.NET MVC 3 Tools Update运行VS2010 SP1,因为我试图安装它,它说它已经安装了。
答案 0 :(得分:1)
生成的控制器代码:
// GET: /Album/Create
public ActionResult Create()
{
ViewBag.GenreId = new SelectList(db.Genre, "Id", "Name");
return View();
}
相关视图代码:
<div class="editor-label">
@Html.LabelFor(model => model.GenreId, "Genre")
</div>
<div class="editor-field">
@Html.DropDownList("GenreId", String.Empty)
@Html.ValidationMessageFor(model => model.GenreId)
</div>
这就是我想要的。显然,如果有人希望对此发表评论那么好,但确实有效。
感谢。