DropDownListFor的模型绑定问题

时间:2011-08-20 15:03:40

标签: asp.net-mvc-3 razor html.dropdownlistfor

@Html.DropDownListFor(model => model.Activity.ActivityType, new 
     SelectList(Model.ActivityTypes, "ActivityTypeId", "Name") )

我在视图中有上面的下拉列表。在我的表单上提交时,所选的ActivityType无法绑定到我的模型中的Model.Activity.ActivityType属性。

如果无法将字符串转换为ActivityType,则会出现错误。

我认为这是因为它只是试图绑定ActivityType的Name属性而不是整个对象。

我需要做些什么来确保在提交表单时所选的ActivityType正确绑定到模型?

谢谢

1 个答案:

答案 0 :(得分:6)

lambda中使用的属性作为DropDownListFor帮助器的第一个参数必须是标量值(字符串,整数,...)。您不应该使用复杂类型,因为HTML表单中的<select>元素仅提交单个值。所以你可能需要绑定到相应的id属性:

@Html.DropDownListFor(
    model => model.Activity.ActivityType.ActivityTypeId, 
    new SelectList(Model.ActivityTypes, "ActivityTypeId", "Name")
)