List<SelectListItem> items = new List<SelectListItem>();
if (a)
{
SelectListItem deliveryItem = new SelectListItem()
{
Selected = a.selected,
Text = "Delivery",
Value = "1"
};
items.Add(deliveryItem);
}
if (b)
{
SelectListItem pickupItem = new SelectListItem()
{
Selected = b.selected,
Text = "Pickup",
Value = "2"
};
items.Add(pickupItem);
}
SelectList selectList = new SelectList(items);
ViewData["OrderTypeList"] = selectList;
Run Code Online (Sandbox Code Playgroud)
然后使用它
Html.DropDownList("OrderTypeList")
Run Code Online (Sandbox Code Playgroud)
呈现
<select id="OrderTypeList" name="OrderTypeList"><option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
</select>
Run Code Online (Sandbox Code Playgroud)
为什么它没有正确渲染选项?
当你这样做时,你正在调用的构造函数方法:
SelectList selectList = new SelectList(items);
Run Code Online (Sandbox Code Playgroud)
创建一组SelectListItems,它们本身指向SelectListItems(因此它是一个奇怪的选项,因为它只是在对象上调用ToString).而是直接将列表设置为ViewData键
ViewData["OrderTypeList"] = items;
Run Code Online (Sandbox Code Playgroud)
你也可以简单地改变一行:
SelectList selectList = new SelectList(items);
Run Code Online (Sandbox Code Playgroud)
至
SelectList selectList = new SelectList(items, "Text", "Value");
Run Code Online (Sandbox Code Playgroud)
这将指示MVC将哪些属性用作选项标记中的Text和Value.
| 归档时间: |
|
| 查看次数: |
5875 次 |
| 最近记录: |