日期:2014-05-17  浏览次数:20664 次

MVC中,Html.DropDownListFor如何绑定数据?
Model 
class Model
{
    // 保存下拉列表选中项的value
    public string selectValue{get;set;}
}

view强类型绑定上述model

我在controller写一个selectList放到viewbag中,ViewBag.Options = selectList

然后在view中用DropDownListFor (model =>model.selectValue, ViewBay.Options as Inumerable<SelectListItem>) 可以正常显示,但是Post的时候出错。

类似下面这个错误,字段不一样


------最佳解决方案--------------------
提示说的很清楚了,你返回的ViewData中没有"citys"这个键。
------其他解决方案--------------------
Post 数据操作后,转向其他页面。
如果还需要返回当前这个页面,需要在Post的控制器中再写一次selectlist。
------其他解决方案--------------------
注:我是想直接把选定项的value值绑定到model中的字段,因为我在post的action中要直接把这个model插入到数据库中。
------其他解决方案--------------------
引用:
Post 数据操作后,转向其他页面。
如果还需要返回当前这个页面,需要在Post的控制器中再写一次selectlist。

我现在的问题不是下拉列表的数据绑定不上,而是如何能让下拉列表选中项的value值绑定在model中。
------其他解决方案--------------------
引用:
提示说的很清楚了,你返回的ViewData中没有"citys"这个键。

确实如此,可是,我想把选定项的value值保存到model中,还需要在viewData中赋值么?
------其他解决方案--------------------
结贴:原因是自己傻逼了。
------其他解决方案--------------------
顺便说下,citys不符合英文的习惯,应该是cities。
------其他解决方案--------------------
如果你使用EF这样的框架,它会很智能地命名,比如有个表叫city,那么它会让实体命名为city,而实体集命名为cities。尤其是像person和people这样不规则的都可以处理,真的很好。