我在使用Razor语法的MVC 3中的代码片段有问题。在我的数据库表(MySQL)中,我有一个列(FK)LanguageID [int]
。然后,在该视图中,我想将该列分配给DropDownList,其中包含我即时生成的语言列表:
List<SelectListItem> list = new List<SelectListItem>();
list.Add(new SelectListItem
{
Value = tableRow.ID.ToString()
,
Text = "language"
}
然后,在View中,我将该列表连接到Language属性:
@Html.DropDownListFor(
model => model.Language,
new SelectList(ViewData["LanguageList"] as List<SelectListItem>,
"Value", "Text")
)
但是,当我将数据发布到服务器时,它返回错误结果"The value '353' is invalid."
,其中353
是数据库中的语言ID。我做错了什么?
编辑
在调试时,我注意到ModelState中的错误消息:"The parameter conversion from type 'System.String' to type 'FavorytaWeb.Models.BookLanguage' failed because no type converter can convert between these types."
答案 0 :(得分:5)
替换:
@Html.DropDownListFor(
model => model.Language,
...
)
使用:
@Html.DropDownListFor(
model => model.Language.LanguageID,
...
)
您无法将值353
绑定到model.Language
所代表的复杂类型。它没有意义。您只能将其绑定到标量属性。