我正在尝试学习如何使用ASP.NET MVC 4和Entity FrameWork 5,我对下拉列表的脚手架感到有些困惑。
我有三个班级:
public class ScopeType
{
public int ScopeTypeId { get; set; }
[Required]
public string Type { get; set; }
}
public class ScopeManufacturer
{
public int ScopeManufacturerId { get; set; }
[Required]
[Display(Name="Manufacturer Name")]
public string Name { get; set; }
}
public class Scope
{
public int ScopeId { get; set; }
[Required]
public ScopeManufacturer ScopeManufacturer { get; set; }
[Required]
public string Name { get; set; }
[Required]
public ScopeType ScopeType { get; set; }
[Required]
public int Aperture { get; set; }
[Required]
public int FocalLength { get; set; }
}
基本上,前两个类只是我希望出现在' Scope'的下拉列表中的值列表。创建/编辑表单。这是一对一的关系。
我构建了解决方案,然后添加了scaffolded控制器和视图。不幸的是,对于' Scope'控制器和视图,ScopeType和ScopeManufacturer导航属性被忽略;没有生成下拉列表。
然后我在谷歌的例子中发现,人们通过创建整数属性来描述项目之间的关系,其名称与相关事物上的Id相同。因此,我删除了控制器和视图,并再次尝试使用:
public class Scope
{
public int ScopeId { get; set; }
[Required]
public int ScopeManufacturerId { get; set; }
[Required]
public string Name { get; set; }
[Required]
public int ScopeTypeId { get; set; }
[Required]
public int Aperture { get; set; }
[Required]
public int FocalLength { get; set; }
}
这对我来说仍然没有下拉列表 - 相反,它给了我2个额外的字段供我输入整数。
我做错了什么,或者我错误地认为MVC 4中的脚手架会为这样的1对1关系生成下拉列表?