在使用 SelectExtension 的 DropDownList 方法时,我发现了一个奇怪的行为。我创建了一个 IEnumerable<SelectListItem> ,其中一个的Selected属性设置为“true”。但是,当我将它传递给以下方法时,Selected属性被重置为“false”,因此下拉控件没有选择正确的项目。
public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, string name, IEnumerable selectList);
我什至尝试使用 SelectList 类并指定 SelectedValue 属性,但仍然没有选择正确的 <option> 标记。
关于如何保持所选值的任何想法?
写了黑客但更喜欢解决方案
下面是在使用从 MVC 发出的 Html 之前更改所选选项的代码 hack。我不喜欢这个解决方案,但我不知道该怎么做。
// the following is a hack due to a precived MVC 3 bug
var html = SelectExtensions.DropDownList(helper, propertyName, source).ToHtmlString();
html = html.Replace("selected=\"selected\"", string.Empty);
html = html.Replace(string.Format("value=\"{0}\"", source.SelectedValue), string.Format("value=\"{0}\" selected=\"selected\"", source.SelectedValue));