C# MVC实体框架DropDownListFor<&燃气轮机;
我想遵循最佳MVC最佳实践来创建水滴列表 我有3个模型(为了这个目的我减少了它们) 模型一 学生 模式二 场地 模式三 虚拟机 在我的VM视图中,我使用EditorForHTML帮助程序来填充我的VM和学生模型。站点模型在数据库种子处预先填充 我正在寻找最好的方式,包括在我的虚拟机视图网站下拉列表,这将映射到我的学生模型 如何正确设置模型以实现此目标?ViewModelC# MVC实体框架DropDownListFor<&燃气轮机;,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我想遵循最佳MVC最佳实践来创建水滴列表 我有3个模型(为了这个目的我减少了它们) 模型一 学生 模式二 场地 模式三 虚拟机 在我的VM视图中,我使用EditorForHTML帮助程序来填充我的VM和学生模型。站点模型在数据库种子处预先填充 我正在寻找最好的方式,包括在我的虚拟机视图网站下拉列表,这将映射到我的学生模型 如何正确设置模型以实现此目标?ViewModel public class VM { public int ID {get;set} public studen
public class VM
{
public int ID {get;set}
public student Students {get;set;}
public SelectList SiteList {get;set;}
public int SiteID {get;set;}
public DateTime Date { get { return DateTime.Now; } }
public bool Criteria {get;set;}
}
加载视图操作
public ActionResult LoadVMView(){
var model = new VM();
var items = GetSitesFromDatabase().Select(s => new SelectListItem(){
Text = s.SiteName,
Value = s.ID.ToString()
});
model.SiteList = new SelectList(items);
return View(model);
}
视图:
在岗
[HttpPost]
public ActionResult LoadVMView(VM model){
var selecteSiteID = model.SiteID;
}
简而言之,您需要扩展方法并将列表
放入视图模型中
这是一本书。小提琴有更多的细节。螺母和螺栓如下所示:
ViewModel-添加列表
在psuedo代码中,上面说
- 模型中的
对象包含要显示的属性李>站点
- 使用模型中的
对象创建一个新的Sites
。使用SelectList
属性作为数据值,使用ID
属性作为数据文本李>SiteName
- 根据上述信息创建一个下拉列表
public ActionResult Index()
{
var vm = SeedFromDatabase();
return View(vm);
}
private MyViewModel SeedFromDatabase()
{
var vm = new MyViewModel();
vm.Sites.Add(new Site(0, "one"));
vm.Sites.Add(new Site(1, "two"));
vm.Sites.Add(new Site(2, "three"));
return vm;
}
你能澄清一下你的问题吗?如果该模型将使用所有三个模型,你将使用所有数据创建一个更大的视图。在你的模型三虚拟机上,我强烈建议进行更改。这是一个好方法,尽管它的构建方式与当前不同。在构建之前,它需要做大量的工作。@ShaunLuttin答案只是为了指导DropDownList for如何工作,这是OP在问题中询问的,它没有构建。例如,您不能使用
ToList()
分配给SelectList
。此外,您不能将int
隐式转换为string
。属性中缺少分号。
public ActionResult LoadVMView(){
var model = new VM();
var items = GetSitesFromDatabase().Select(s => new SelectListItem(){
Text = s.SiteName,
Value = s.ID.ToString()
});
model.SiteList = new SelectList(items);
return View(model);
}
@Html.DropDownListFor(m => m.SiteID, Model.SiteList)
[HttpPost]
public ActionResult LoadVMView(VM model){
var selecteSiteID = model.SiteID;
}
public class MyViewModel
{
public MyViewModel()
{
this.Sites = new List<Site>();
}
public int ID { get; set;}
public Student Students { get; set; }
public DateTime Date { get { return DateTime.Now; } }
public bool Criteria { get; set; }
public List<Site> Sites { get; set; }
}
@Html.DropDownListFor(m => m.Sites,
new SelectList(Model.Sites, "ID", "SiteName"))
public ActionResult Index()
{
var vm = SeedFromDatabase();
return View(vm);
}
private MyViewModel SeedFromDatabase()
{
var vm = new MyViewModel();
vm.Sites.Add(new Site(0, "one"));
vm.Sites.Add(new Site(1, "two"));
vm.Sites.Add(new Site(2, "three"));
return vm;
}