这让我疯狂,而且我已经研究了StackOverflow上的相关帖子。MVC3脚手架不会在存在外键的视图中生成下拉列表
基本上我有2个表,专辑和流派与前者有一个外来类型的外键。我在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>
所以我真的很困惑。任何想法将不胜感激。
感谢,
埃德
附:我使用ASP.NET MVC 3工具运行VS2010 SP1更新它似乎,因为我试图安装它,它说它已经安装。
我并不完全遵循这里...您是否期望SelectList属性也会在Domain Class中为您生成? – Dmitry
不,应该在控制器的创建和编辑操作中生成SelectList。另外,应该在视图中指定HTML.DropDownListFor。我刚刚尝试过关闭Nuget的Steven Sanderson的MVCScaffolding包,并且这种方法的工作方式与Domain规范相同,尽管我现在正在获取数据库更新异常,但似乎找不到我的外键值,但我使用正确的键获取了DropDown值。我宁愿让标准MS脚手架工作。非常感谢您的回复。 – EdB