MVC SelectList无法正常工作

mam*_*amu 6 asp.net-mvc

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)

为什么它没有正确渲染选项?

Joh*_*ter 7

当你这样做时,你正在调用的构造函数方法:

SelectList selectList = new SelectList(items);
Run Code Online (Sandbox Code Playgroud)

创建一组SelectListItems,它们本身指向SelectListItems(因此它是一个奇怪的选项,因为它只是在对象上调用ToString).而是直接将列表设置为ViewData键

ViewData["OrderTypeList"] = items;
Run Code Online (Sandbox Code Playgroud)


Mat*_*fer 7

你也可以简单地改变一行:

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将哪些属性用作选项标记中的TextValue.