Entity framework EntityFramework的MVC4编辑器Formodel模板
在使用Razor引擎和实体框架的MVC4 web应用程序中,是否可以创建一个模板,用于html helper@html.EditorForModel,以便更好地显示具有其他表链接的实体 我正在使用的示例是一个DbContext,其中包含两个dbset、region和Schools。有许多地区,一所学校可能属于一个地区。理想情况下,我希望学校的编辑显示一个地区下拉列表,供选择。我想制作一个足够通用的模板,这样我就可以调用@Html.EditorForModel帮助程序,表单一次生成,并且我可以在以后对地区或学校表进行更改,并且这些更改将反映在编辑表单中,而无需我进行更改 一些代码:Entity framework EntityFramework的MVC4编辑器Formodel模板,entity-framework,asp.net-mvc-4,razor,Entity Framework,Asp.net Mvc 4,Razor,在使用Razor引擎和实体框架的MVC4 web应用程序中,是否可以创建一个模板,用于html helper@html.EditorForModel,以便更好地显示具有其他表链接的实体 我正在使用的示例是一个DbContext,其中包含两个dbset、region和Schools。有许多地区,一所学校可能属于一个地区。理想情况下,我希望学校的编辑显示一个地区下拉列表,供选择。我想制作一个足够通用的模板,这样我就可以调用@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; }
}
}
我不知道这是否可行,但我真的希望新模板循环实体的属性,并检测是否存在链接表(例如,学校包含一个区域),并在下拉列表中显示区域列表。一般来说,将数据模型直接传递给视图进行渲染是个坏主意。除其他事项外,还有安全问题。但是,即使要这样做,您也不希望像那样传递整个数据上下文,因为它的结构不适合在网页中呈现 你可以离开科塞。看看是怎么回事 另一种方法是使用脚手架,让它来创建视图。大多数时候(!)它会为您创建正确的下拉列表,您只需自定义视图即可 在那些看到奇怪DDL的少数情况下,您只需要更正相关操作方法中的
ValueName
和DataName
参数,从而将列表项返回到视图中
@model object
@using (Html.BeginForm())
{
@Html.ValidationSummary("Broken stuff:")
@Html.EditorForModel()
}