C# mvc DropDownList选中状态无效情况分析
情况:
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选中状态无效情况分析的更多相关文章
- JQuery Mobile - 修改复选框的选中状态无效解决办法!
今晚,在编写JQuery Mobile程序时候,需要在代码里面控制复选框的选中状态,很简单的代码啊,很快完成了!等测试程序时候傻眼了,页面无论如何也不按照我写的代码显示出来!问题出在哪里呢?是我写的控 ...
- Js获取Gridview中Dropdownlist选中状态
在Gridview中加入Dropdownlist模板列,加入DropDownlist 是一种常用的操作,其中涉及到如何获取选择项和Gridview重新绑定两个要点. 如图 前台代码如下 <%@ ...
- LayUI左侧菜单无法保持选中状态
1.问题描述:一般的左侧菜单都会是动态添加的模块,利用循环把模块名和链接地址逐个显示出来如下图 但是问题来了,只要点任何二级菜单就不会保持左侧菜单当前一级菜单和二级菜单选中状态. 2.分析原因:因为模 ...
- MVC dropdownlist 后端设置select属性后前端依然不能默认选中的解决方法
-----------------------------------来自网上的解决方法--------------------------------------------- ASP.Net MV ...
- @Html.DropDownList 设置选中值无效
有时候在ASP.NET MVC中用@Html.DropDownList 设置选中值无效,如图: 具体原因说不清,反正只要改个名字就行了!!!,如图:::
- jquery设置checkbox状态,设置dropdownlist选中值,隐藏某控件,给某控件追加东西
jquery设置checkbox状态 $("[ID$=chkType]").attr("checked", true); jquery设置dropdownlis ...
- RecyclerViewSelectableAdapterDemo【封装BaseSelectableAdapter用于多选、单选,以及切换选中状态等功能】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 记录封装单选.多选.切换选中状态的BaseSelectableAdapter基类,配合Recyclerview使用. 注意:此Dem ...
- 如何在 messager/alert/confirm等消息提示框中 获取 / 设置 嵌入 html内容中的 input[type=checkbox]等的选中状态?
总结, 有3点: 不能/不要 在 这些消息框 / 提示框/ 对话框中的 回调函数中去写代码: 获取嵌入 内容中input.checkbox的选中状态, 因为 虽然在这些框存在的时候, 这个 check ...
- 怎么取得dropdownlist选中的ID值
把数据库绑定在dropdownlist中,然后把选中的dropdownlist的项的ID值保存在另外的一个数据库中.怎么取得dropdownlist选中的ID值呢?? this.DropDownLis ...
随机推荐
- window 10 用composer安装 基于 Laravel 5.3 的 Coaster CMS Curl错误77解决
安装教程来自 http://laravelacademy.org/post/6547.html 1.系统环境windows 10 nodejs3.9.2 composer1.2.4(国内镜像) Cmd ...
- session 丢失和解决方案
在ASP.NET的开发中,总遇到Session丢失.最常见的情况是当用户登录后将用户信息保存在Session中例如Session["user"]=user;在其后的页面中检查Ses ...
- cursor 鼠标样式——属性
取值: [ [<uri> ,]* [ auto | crosshair | default | pointer | move | e-resize | ne-resize | nw-res ...
- 魅族Java面经
1. 面试官问题怎么获取Memcached里面的session,我答request.getSession().这是通过cookie里面的sessionID获取session的,Memcached里面也 ...
- QNDataSet打印预览自动关闭问题
问题:打印预览后,数据集自动关闭 解决: TQNDataSet = class(TFDMemTable) private protected procedure PSReset; override; ...
- IE8下服务端获取客户端文件的路径为C:/fakePath问题的解决方案
上一篇文章上提到,IE8下服务端获取客户端文件的路径时,会变成C:/fakePath问题,于是乎通过文件路径去获得文件大小就失败了. 上网搜了一下,主要原因是IE8因为安全考虑,在上传文件时屏蔽了真实 ...
- JavaBean,POJO,VO,DTO的区别和联系
JavaBeans A JavaBean is a class that follows the JavaBeans conventions as defined by Sun. Wikipedia ...
- rabbitMQ学习(四)
按照routing key接收信息 发送端: public class EmitLogDirect { private static final String EXCHANGE_NAME = &quo ...
- 分析一个类似于jquery的小框架
在网上下了一个类似于jQuery的小框架,分析源码,看看怎么写框架. 选择器Select //用沙箱闭包其整个代码,只有itcast和I暴漏在全局作用域 (function( window , und ...
- Python:关于字典的相关操作
>>> people = {"Tom":170, "Jack":175, "Kite":160, "White& ...