如何在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
(。
您需要将所有对象作为"模型"传入。最佳做法是使用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,然后根据需要继续。