我在我的控制器中構建以下SelectList
。從選擇列表ASP.NET MVC下拉列表
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)
它看起來像我給它什麼應該是一個非常簡單的下拉列表中選擇一組有效的SelectListItem
S,但是,而不是領有效<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)') –