Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 MVC 3 DropDownListFor和错误值错误_Asp.net Mvc 3_Html.dropdownlistfor - Fatal编程技术网

Asp.net mvc 3 MVC 3 DropDownListFor和错误值错误

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 {

我的代码片段在MVC 3中有一个问题,语法是Razor。在我的DB表(MySQL)中,我有一个column(FK)
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应用程序。因此,你有一个视图,它将一些数据发布到一个控制器操作,该控制器操作以你的视图模型为参数。因此,默认的模型绑定器将启动并尝试绑定向这个模型申请价值。明白了。谢谢,我欠你一杯啤酒