如何在MVC 3中使用实体框架绑定下拉列表

本文关键字:实体 框架 绑定 下拉列表 MVC | 更新日期: 2023-09-27 18:14:18

我想在我的MVC应用程序中使用Entity Framework在页面上显示dropdownList,但我只是在这里使用HTML Helper。所以,如果有人知道实体框架,请帮助我…

我的dataContext分部类是Entities,其中一个名为MemberInfo的实体有一些字段,包括MemberID&MemberName,所以我的下拉列表应该显示字段MemberName&后面的值应该是MemberID

我试过的代码--->

@Html.DropDownListFor(Model => Model.MemberID, MemberInfo)

在控制器中,我正在返回型号--->

var MemberNameList = FinanceDBContext.MemberInfoes.Select(x => new { x.MemberID, x.Name });
return View(MemberNameList);  

但不起作用(errors(。

如何在MVC 3中使用实体框架绑定下拉列表

您需要将所有对象作为"模型"传入。最佳做法是使用ViewModel,它将包含数据列表和用于存储所选项目的属性。

ViewModel

public class MyViewModel
{
    // The drop-down list and variable to get selection
    public List<Member> Members { get; set; }
    public int SelectedMemberId { get; set; }
}

控制器

[HttpGet]
public ActionResult Index()
{
    var viewModel = new MyViewModel();
    viewModel.Members = FinanceDBContext.MemberInfoes.ToList();
    return View(viewModel);
}
[HttpPost]
public ActionResult Index(MyViewModel viewModel)
{
    string debug = string.Format("You selected member: {0}", viewModel.SelectedMemberId);
    return View(viewModel);
}

最后,在您的视图中(这些行需要在BeginForm{…}中,并确保您的视图是强类型的MyViewModel

@Html.DropDownList("SelectedMemberId", new SelectList(Model.Members, "MemberID", "Name"))
<input type="submit" value="Save etc..." />

在本例中,您可以在HttpPost操作上设置一个断点,并检查调试字符串以检查是否返回了正确的Member,然后根据需要继续。