命名不规范引发的DropDownListFor无法选中
问题的引出:
项目中遇到和以下链接相同的问题,大概可以描述为:后台ViewData["KeyName"],前台Model属性里也有一个字段KeyName,那么DropDownListFor就无法选中。
附链接:http://bbs.csdn.net/topics/390867060
链接中,有人给出了解决方案,就是将ViewData["KeyName"]的KeyName换一个名称就好了,确实解决了问题,但是不知其所以然。
问题的疑问:
为什么下拉选中项和ViewData的KeyName有关系呢?
问题的解答:
在ASP.NET MVC中使用DropDownList 这篇文章里提到:
如果ViewData和ViewData.Model中同时存在Name,则优先使用ViewData中的项。
DropDownListFor(model=>model.Name,List)相当于DropDownList(“Name”,List)。
Name在ViewData["Name"]和ViewData.Model都存在,那么它优先使用ViewData["Name"]作为选中项。
所以,就引发了“没法选中”的问题。