gpt4 book ai didi

c# - MVC Entity Framework DropDownListFor<>

转载 作者:太空宇宙 更新时间:2023-11-03 13:08:36 25 4
gpt4 key购买 nike

我想遵循创建 DropList 的最佳 MVC 最佳实践。

我有 3 个模型(为此我已将它们缩减)

模型一学生

public int ID {get;set;}
public string Name {get;set}
public Site SiteID {get;set;}

模型二网站

public int ID {get;set;}
public string SiteName {get;set}

模型三虚拟机

public int ID {get;set}
public student Students {get;set;}

public DateTime Date { get { return DateTime.Now; } }
public bool Criteria {get;set;}

在我的 VM View 中,我使用 EditorFor html 助手来填充我的 VM 和学生模型。站点模型预先填充在数据库种子中。

我正在寻找在我的 VM View 中包含站点下拉列表的最佳方法,它将映射到我的学生模型。

如何正确设置我的模型来实现这一目标?

最佳答案

简而言之,您想要 DropDownListFor扩展方法并放置一个 List<Site>进入 View 模型。

这是一个Fiddle that demonstrates your case . fiddle 有更多细节。具体细节在这里:

ViewModel - 添加一个 List<Site>

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; }
}

查看 - 使用 DropDownListFor

@Html.DropDownListFor(m => m.Sites, 
new SelectList(Model.Sites, "ID", "SiteName"))

在伪代码中,上面说

  • Sites模型中的对象包含要显示的属性。
  • 创建一个新的 SelectList使用 Sites模型中的对象。使用 ID属性作为数据值和 SiteName属性作为数据文本。
  • 根据上述信息创建下拉列表。

Controller

这只是将种 subview 模型传递给 View 。

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;
}

关于c# - MVC Entity Framework DropDownListFor<>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29947587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com