情况:

DropDownList控件使用List<SelectListItem>()设置下拉选项和默认值。
当控件的Name和后台的ViewBag(或ViewData)的Key重复,会导致选中状态无效。

规则如下
1、DropDownList数据源可从ViewBag(或ViewData)中同名Key中自动获取
例如,下面这种写法可自动为控件加下拉选项:
Controller中:ViewData["MyList"] = new List<SelectListItem>(){...};
View中:@Html.DropDownList("MyList")//DropDownList无直接数据源

2、DropDownList数据源优先从DropDownList直接的数据源获取。若DropDownList有直接数据源,则ViewData同名Key值(应该是ViewData[Key] as string)只作为默认选中值(见3)

如下情况,都使用SelectListItem,类似于1,option为view的,选中为空

Controller中:ViewData["MyList"] = new List<SelectListItem>(){...};
View中:@Html.DropDownList("MyList", new List<SelectListItem>(){...})//DropDownList有直接数据源

3、DropDownList选中值优先从ViewBag(或ViewData)中同名Key中自动获取
例如,下面这种写法,优先选中的是viewdata中value为"optionvalue"的选项:
Controller中:ViewData["MyList"] = "optionvalue";
View中:@Html.DropDownList("MyList", new List<SelectListItem>(){...})

所以,如上情况,对应的原因同规则2所述,DropDownList优先用了ViewData中的数据作为默认选中值,由于ViewData中的数据dataDic是Dictionary<string,string>类型,DropDownList会认为选中值为(dataDic as string)....后果就是谁都没选中

以上几个规则都是测试出来的结果,未翻看mvc源码,若有不对多有包涵,欢迎指正。

C# mvc DropDownList选中状态无效情况分析的更多相关文章

  1. JQuery Mobile - 修改复选框的选中状态无效解决办法!

    今晚,在编写JQuery Mobile程序时候,需要在代码里面控制复选框的选中状态,很简单的代码啊,很快完成了!等测试程序时候傻眼了,页面无论如何也不按照我写的代码显示出来!问题出在哪里呢?是我写的控 ...

  2. Js获取Gridview中Dropdownlist选中状态

    在Gridview中加入Dropdownlist模板列,加入DropDownlist 是一种常用的操作,其中涉及到如何获取选择项和Gridview重新绑定两个要点. 如图 前台代码如下 <%@ ...

  3. LayUI左侧菜单无法保持选中状态

    1.问题描述:一般的左侧菜单都会是动态添加的模块,利用循环把模块名和链接地址逐个显示出来如下图 但是问题来了,只要点任何二级菜单就不会保持左侧菜单当前一级菜单和二级菜单选中状态. 2.分析原因:因为模 ...

  4. MVC dropdownlist 后端设置select属性后前端依然不能默认选中的解决方法

    -----------------------------------来自网上的解决方法--------------------------------------------- ASP.Net MV ...

  5. @Html.DropDownList 设置选中值无效

    有时候在ASP.NET  MVC中用@Html.DropDownList 设置选中值无效,如图: 具体原因说不清,反正只要改个名字就行了!!!,如图:::

  6. jquery设置checkbox状态,设置dropdownlist选中值,隐藏某控件,给某控件追加东西

    jquery设置checkbox状态 $("[ID$=chkType]").attr("checked", true); jquery设置dropdownlis ...

  7. RecyclerViewSelectableAdapterDemo【封装BaseSelectableAdapter用于多选、单选,以及切换选中状态等功能】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 记录封装单选.多选.切换选中状态的BaseSelectableAdapter基类,配合Recyclerview使用. 注意:此Dem ...

  8. 如何在 messager/alert/confirm等消息提示框中 获取 / 设置 嵌入 html内容中的 input[type=checkbox]等的选中状态?

    总结, 有3点: 不能/不要 在 这些消息框 / 提示框/ 对话框中的 回调函数中去写代码: 获取嵌入 内容中input.checkbox的选中状态, 因为 虽然在这些框存在的时候, 这个 check ...

  9. 怎么取得dropdownlist选中的ID值

    把数据库绑定在dropdownlist中,然后把选中的dropdownlist的项的ID值保存在另外的一个数据库中.怎么取得dropdownlist选中的ID值呢?? this.DropDownLis ...

随机推荐

  1. js数组的操作

    很早之前整理的一篇文章,感觉比较清晰. 一.数组元素的操作 1.数组的创建 var arrayObj = new Array(); var arrayObj = new Array(size); // ...

  2. java使用jsch连接linux

    由于项目需要使用java来linux进行管理,近一番查找,发现第三方jar包 jsch 可以轻松实现对linux的管理,(相关文档及例子请访问官网www.jcraft.com),故引进. 在网上搜索了 ...

  3. DICOM图像像素值(灰度值)转换为CT值

    CT值的单位是Hounsfield,简称为Hu,范围是-1024-3071.用于衡量人体组织对X射线的吸收率,设定水的吸收率为0Hu. 在DICOM图像读取的过程中,我们会发现图像的像素值有可能不是这 ...

  4. chrome浏览器调用 ajax 提示net::ERR_INCOMPLETE_CHUNKED_ENCODING问题解决方案,以及 Response.Close 和 Response.End 的一些问题。

    近段时间去了一家新公司任职,公司产品是一个网站,但是我发现它不兼容谷歌浏览器,用习惯了chrome的我简直是如鲠在喉.终于我抽出了时间,想纠正这个问题.F12一看,发现谷歌提示:net::ERR_IN ...

  5. MFC 给对话框注册热键

    在头文件中添加: //}}AFX_MSGafx_msg LRESULT OnHotKey(WPARAM wParam,LPARAM lParam);//(此行为加入的)BEGIN_MESSAGE_MA ...

  6. 移植milo的全局光照渲染器代码

    测试flascc的性能优化程度,http://bbs.9ria.com/thread-162705-1-1.html . 可以对比下猫粮的http://bbs.9ria.com/thread-5820 ...

  7. IOS--UIAlertView造成屏幕闪烁

    在异步操作中,如果直接Show一个UIAlertView可能会造成屏幕闪烁(目前在iPhone5上发现),解决办法如下: UIAlertView *alert = [[UIAlertView allo ...

  8. 用Java写算法之归并排序

    转自:http://flyingcat2013.blog.51cto.com/7061638/1281026 前面的三种排序算法(冒泡排序,选择排序,插入排序)在平均情况下均为O(n^2)复杂度,在处 ...

  9. Net通用进销存管理系统 + 开发文档+ 使用说明

    通用进销存管理系统 + 开发文档+ 使用说明Net源码下载 包括下面的模块基础资料模块采购管理模块库存管理模块商务管理模块营业管理模块维修管理模块会员管理模块财务管理模块 Net通用进销存管理系统 + ...

  10. C#,java,C++ 等变量命名规则

    命名规则: 必须以“字母” .“_”或“@”开头,不要以数字开头. 后面可以跟任意“数字”,“字母”,“下划线”. ---注意:自己起的名字尽量避免与系统中的关键字重复.不推荐重新定义相同的变量名. ...