在使用 Razor 引擎和实体框架的 MVC4 Web 应用程序中,是否可以创建一个模板以与 html 帮助器 @Html.EditorForModel 一起使用,以便更好地显示具有指向其他表的链接的实体。
我正在使用的示例是一个包含两个 DBSet、Regions 和 Schools 的 DbContext。地区有很多,一所学校可能属于一个地区。理想情况下,我希望学校的编辑器显示可供选择的地区下拉列表。我想制作一个足够通用的模板,这样我就可以调用@Html.EditorForModel 助手并一次性生成表单,并且我可以稍后对区域或学校表进行更改并进行更改无需我进行更改即可反映在编辑表单中。
一些代码:
public class MyContext : DbContext
{
public MyContext ()
: base("DefaultConnection")
{
}
public DbSet<Region> Regions { get; set; }
public DbSet<School> Schools { get; set; }
[Table("Regions")]
public class Region
{
public Region()
{
Schools = new List<School>();
}
[Key]
public int RegionId { get; set; }
[StringLength(256)]
public string RegionName { get; set; }
public ICollection<School> Schools { get; set; }
}
[Table("Schools")]
public class School
{
public School() { }
[Key]
public int SchoolId { get; set; }
[StringLength(256)]
public string SchoolName { get; set; }
[ForeignKey("Region")]
public int RegionId { get; set; }
public virtual Region Region { get; set; }
}
}
我创建了一个局部视图来创建显示编辑器表单,我的想法是我可以传入区域或学校作为视图模型。
@model object
@using (Html.BeginForm())
{
@Html.ValidationSummary("Broken stuff:")
@Html.EditorForModel()
}
我不知道这是否可能,但我真的希望新模板循环遍历实体的属性并检测是否存在链接表(例如 School 包含区域)并在下拉列表中显示区域列表.