Asp.net mvc 3 MVC 3 DropDownListFor和错误值错误
我的代码片段在MVC 3中有一个问题,语法是Razor。在我的DB表(MySQL)中,我有一个column(FK)Asp.net mvc 3 MVC 3 DropDownListFor和错误值错误,asp.net-mvc-3,html.dropdownlistfor,Asp.net Mvc 3,Html.dropdownlistfor,我的代码片段在MVC 3中有一个问题,语法是Razor。在我的DB表(MySQL)中,我有一个column(FK)LanguageID[int]。然后,在该视图中,我想将该列分配给DropDownList,其中包含我动态生成的语言列表: List<SelectListItem> list = new List<SelectListItem>(); list.Add(new SelectListItem {
LanguageID[int]
。然后,在该视图中,我想将该列分配给DropDownList,其中包含我动态生成的语言列表:
List<SelectListItem> list = new List<SelectListItem>();
list.Add(new SelectListItem
{
Value = tableRow.ID.ToString()
,
Text = "language"
}
List List=新列表();
列表。添加(新建SelectListItem)
{
Value=tableRow.ID.ToString()
,
Text=“语言”
}
然后,在视图中,我将该列表连接到Language属性:
@Html.DropDownListFor(
model => model.Language,
new SelectList(ViewData["LanguageList"] as List<SelectListItem>,
"Value", "Text")
)
@Html.DropDownListFor(
model=>model.Language,
新建SelectList(ViewData[“LanguageList”]作为列表,
“价值”、“文本”)
)
但是,当我将数据发布到服务器时,它返回错误结果“值“353”无效。”其中353
是数据库中的语言ID。我做错了什么
编辑
在调试过程中,我注意到ModelState中的错误消息:“从类型'System.String'到类型'FavorityTaWeb.Models.BookLanguage'的参数转换失败,因为没有类型转换器可以在这些类型之间转换。”
替换:
@Html.DropDownListFor(
model => model.Language,
...
)
与:
您无法将值353
绑定到复杂类型,而复杂类型正是模型。语言所表示的。它毫无意义。您只能将其绑定到标量属性。替换:
@Html.DropDownListFor(
model => model.Language,
...
)
与:
您不能将值353
绑定到复杂类型,而复杂类型正是模型。语言所表示的。它根本没有意义。您只能将其绑定到标量属性。发布调用的代码(表单控制器/操作)会非常有帮助。发布调用的代码会非常有帮助(form Controller/Action)显然它是有效的,但我想知道,在这种情况下,编译器会将LanguageID与“值”进行“连接”?@Tony,编译器没有连接任何东西。编译器所做的是将你的C#代码编译成MSIL。然后你运行你的代码。你的代码恰好是一个ASP.NET MVC应用程序。因此,你有一个视图,它将一些数据发布到一个控制器操作,该控制器操作以你的视图模型为参数。因此,默认的模型绑定器将启动并尝试绑定向这个模型请求值。明白了。谢谢,我欠你一个人情,因为它工作得很好,但我想知道,在这种情况下,编译器会将LanguageID与“值”连接起来?@Tony,编译器没有连接任何东西。编译器所做的是将你的C#代码编译成MSIL。然后你运行你的代码。你的代码恰好是一个ASP.NET MVC应用程序。因此,你有一个视图,它将一些数据发布到一个控制器操作,该控制器操作以你的视图模型为参数。因此,默认的模型绑定器将启动并尝试绑定向这个模型申请价值。明白了。谢谢,我欠你一杯啤酒