关于MVC中DropDownListFor的一个bug
2014-02-25 16:55
309 查看
如以下代码:
使用ViewDate传递数据 并使用“source_type”这个名称 导致页面的下拉框不能正确显示 当前model值
原因:
这个Eval 存在问题。 当使用ViewData传递数据时候 而且和第一个参数表达式名称相同时 此段代码 获取的值为:整个数组 所以 。。。 如果你使用ViewData["source_type2"]只要和表达式名字不相同即可
建议:
1、不要使用ViewData或者ViewBag传递数据给DropDownList
2、如果必须使用ViewData请使用 名称非表达式名称
//后台 代码 ViewData["source_type"] = new List<SelectListItem> { new SelectListItem() {Text = "测试1", Value = "1"}, new SelectListItem() {Text = "测试2", Value = "2"}, new SelectListItem() {Text = "测试3", Value = "3"}, new SelectListItem() {Text = "测试4", Value = "4"} }; return View(new thr_channel_commodity_report { source_type = 4 }); //前台代码: @Html.DropDownListFor(x=>x.source_type,ViewData["source_type"] as IEnumerable<SelectListItem>)
使用ViewDate传递数据 并使用“source_type”这个名称 导致页面的下拉框不能正确显示 当前model值
原因:
源码 最底层这个方法 : private static MvcHtmlString SelectInternal(this HtmlHelper htmlHelper, string optionLabel, string name, IEnumerable<SelectListItem> selectList, bool allowMultiple, IDictionary<string, object> htmlAttributes) 其中有段代码: if (!usedViewData) { if (defaultValue == null) { defaultValue = htmlHelper.ViewData.Eval(fullName); } } 其中的 htmlHelper.ViewData.Eval(fullName);
这个Eval 存在问题。 当使用ViewData传递数据时候 而且和第一个参数表达式名称相同时 此段代码 获取的值为:整个数组 所以 。。。 如果你使用ViewData["source_type2"]只要和表达式名字不相同即可
建议:
1、不要使用ViewData或者ViewBag传递数据给DropDownList
2、如果必须使用ViewData请使用 名称非表达式名称
相关文章推荐
- struts2关于checkbox处理的一个bug
- VS2005的一个关于调试的bug
- 关于一个交叉引用Bug:“can not find interface declaration”
- IE9 RC版关于overflow的一个bug
- WinSock中关于阻塞接收/发送超时的一个BUG
- 关于ICMP Redirect路由的一个不是bug的bug
- 关于Ext.form.NumberField中输入一个超大数字,失去焦点后变成另一个数字的bug的处理
- 【转】网上看到的关于bug度量的一个公式
- 关于PullToRefreshListView 上拉加载更多 的一个BUG
- VS2005中的一个小BUG:关于Dropdownlist无法Datadinding的解决方法。
- 今天遇到一个关于STL中排序的问题, 怀疑是sort的bug!
- 关于springcloud kafka binder的一个关于consumer group设置的一个bug
- 关于a标签中图文链接在IE的一个BUG分析
- 由一个bug引起的关于list的思考
- 关于CUDA4.1 NVCC一个奇妙的BUG 的解释
- 今天修了一个bug,关于debug日志的问题
- 关于ASP.NET MVC中Response.Redirect和RedirectToAction的BUG (跳转后继续执行后面代码而不结束进程)以及处理方法
- 关于C# XML序列化的一个BUG的修改
- 一个让我怀疑信仰的BUG——关于临界区
- JSF2.0遇到的关于backbean一个BUG