【发布时间】:2011-05-12 11:02:37
【问题描述】:
我在这里拉头发。我在 MVC3 中使用 DropDownListFor HTML 助手,枚举如下:
@Html.DropDownListFor(model => model.Title, Enum.GetValues(typeof(ICS_Signup_Form.Models.Titles)).Cast<ICS_Signup_Form.Models.Titles>().Select(x => new SelectListItem { Text = x.ToString().ToFriendlyString(), Value = x.ToString() }), new { @class = "styled" })
我的枚举看起来像这样:public enum Titles { Mr, Dr, Miss, Mrs, Ms, Other };
如果Model.Title 等于“其他”,则下拉列表不会选择此值,HTML 中没有selected="selected"。我尝试将属性Selected 添加到SelectListItem:Selected = (x.ToString() == Model.Title) 并且当我单步执行我的代码时,表达式工作正常,正如预期的那样,但所选值始终是“先生”(列表中的第一个) .
更奇怪的是,它工作得非常好(我项目中的其他 7 个下拉框也是如此):
@Html.DropDownListFor(model => model.BusinessStatus, Enum.GetValues(typeof(ICS_Signup_Form.Models.BusinessTypes)).Cast<ICS_Signup_Form.Models.BusinessTypes>().Select(x => new SelectListItem { Text = x.ToString().ToFriendlyString(), Value = x.ToString() }), new { @class = "styled" })
使用枚举:public enum BusinessTypes { Charity, Government, Limited, LLP, Partnership, PLC, SoleTrader };
区别?没有..有什么想法吗?
【问题讨论】:
-
很难说,但由于某种原因,相等性已关闭...可能是因为字符串中的编码,或者标题中可能有另一个字符将其抛出...您尝试过吗将标题写到浏览器并验证它是否匹配值 100%?
-
是的,它与浏览器输出和数据库中的 100% 匹配。
标签: c# asp.net asp.net-mvc-3 razor