MVC下拉列表未绑定到模型

时间:2010-04-29 19:54:37

标签: c# asp.net asp.net-mvc drop-down-menu

我正在尝试设置一个简单的下拉列表,但我似乎无法将其绑定到模型。 我使用的是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()));

我相信我已经采取了正确的方法让这个项目直接绑定到我的模型。 我在这里缺少什么吗?

非常感谢您的时间, 杆

2 个答案:

答案 0 :(得分:7)

OMG我发现了问题........

我花了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"); 您可能会觉得有用。