命名不规范引发的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"]作为选中项。

所以,就引发了“没法选中”的问题。

参考:http://www.cnblogs.com/rupeng/p/5138575.html

原文地址:https://www.cnblogs.com/talentzemin/p/5005554.html