DropDownListFor的模型绑定问题

Mic*_*ael 0 html.dropdownlistfor razor asp.net-mvc-3

@Html.DropDownListFor(model => model.Activity.ActivityType, new 
     SelectList(Model.ActivityTypes, "ActivityTypeId", "Name") )
Run Code Online (Sandbox Code Playgroud)

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

有一个错误说无法将字符串转换为ActivityType.

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

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

谢谢

Dar*_*rov 6

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

@Html.DropDownListFor(
    model => model.Activity.ActivityType.ActivityTypeId, 
    new SelectList(Model.ActivityTypes, "ActivityTypeId", "Name")
)
Run Code Online (Sandbox Code Playgroud)