我正在尝试设置一个简单的下拉列表,但我似乎无法将其绑定到模型。 我使用的是Asp.Net MVC和nhibernate。
我的下拉列表声明如下:
<%= Html.DropDownListFor(model => model.Project, (IEnumerable<SelectListItem>)ViewData["Projects"], " -- Select -- ", new { name = "Project" })%>
我设置了这样的选择列表:
ViewData["Projects"] = new SelectList(projectRepository.GetAll(), "EntityGUID", "Name", editEntity.Project);
这似乎将选择列表绑定到Dropdown罚款,但未设置SelectedValue。 它显示为默认值---选择---
此外,当我保存此数据时,下拉列表未绑定到模型,我必须手动设置对象,以便保存它:
entity.Project = projectRepository.GetById(new Guid(Request["Project"].ToString()));
我相信我已经采取了正确的方法让这个项目直接绑定到我的模型。 我在这里缺少什么吗?
非常感谢您的时间, 杆
答案 0 :(得分:7)
我花了3天时间转过来:
<%= Html.DropDownListFor(model => model.Aspect, (IEnumerable<SelectListItem>)ViewData["AspectTypes"])%>
成:
<%= Html.DropDownListFor(model => model.Aspect.EntityGUID, (IEnumerable<SelectListItem>)ViewData["AspectTypes"])%>
model.Aspect **。EntityGUID ** 我不得不将下拉绑定到对象guid,而不是对象本身。 Doh ....我感觉到了痛苦,需要做很多工作才能赶上。
感谢您的时间。
答案 1 :(得分:0)
这只是一种预感,因为您的代码看起来不错,但我认为您在定义SelectList
时不需要包含第四个参数。设置该字段可能会破坏正常的事物流(覆盖模型绑定),我从未绑定DropDownList
并设置了SelectList
的{{1}}。
尝试删除它,看看它是怎么回事。
SelectedValue
前一段时间I asked a question关于如何在MVC2中实现SelectList(projectRepository.GetAll(), "EntityGUID", "Name");
您可能会觉得有用。