【发布时间】:2013-11-27 12:49:15
【问题描述】:
我正在我的控制器中构建以下SelectList。
var u = new NewUser();
u.UserTypeOptions = new SelectList(new List<SelectListItem>
{
new SelectListItem { Selected = true, Text = string.Empty, Value = "-1"},
new SelectListItem { Selected = false, Text = "Homeowner", Value = ((int)UserType.Homeowner).ToString()},
new SelectListItem { Selected = false, Text = "Contractor", Value = ((int)UserType.Contractor).ToString()},
});
return u;
并像这样在我的视图上显示它:
@Html.DropDownListFor(m => m.UserType, Model.UserTypeOptions)
看起来我在应该是一个非常简单的下拉列表中为其提供了一组有效的SelectListItems,但我没有得到一个具有良好值和文本的有效<option> 列表,而是这样:
<select data-val="true" data-val-range="A user type must be selected." data-val-range-max="2" data-val-range-min="1" data-val-required="The UserType field is required." id="UserType" name="UserType" class="input-validation-error">
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
</select>
什么给了?据我所知,这应该可行。
【问题讨论】:
-
你到底为什么要创建一个
SelectList,然后再从它创建另一个SeelctList。并且设置SelectListItem的Selected属性同样没有意义-它被HtmlHelper 忽略-它的属性UserType的值决定了选择的内容(唯一尊重Selected属性的时间是在创建时未绑定到您的模型的下拉列表(例如@Html.DropDownList("NotAProperty", Model.UserTypeOptions))
标签: c# asp.net-mvc drop-down-menu