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;然后与一起使用
Html.DropDownList("OrderTypeList") 呈现
<select id="OrderTypeList" name="OrderTypeList"><option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
</select>为什么它没有正确地呈现选项?
发布于 2009-06-28 15:45:59
这样做时调用的构造函数方法:
SelectList selectList = new SelectList(items);创建一组SelectListItems,它们本身指向SelectListItems (因此出现了奇怪的选项,因为它只是在对象上调用ToString )。相反,直接将列表设置为ViewData键
ViewData["OrderTypeList"] = items;发布于 2011-04-04 21:17:07
您也可以简单地将一行更改为:
SelectList selectList = new SelectList(items);至
SelectList selectList = new SelectList(items, "Text", "Value");这将指示MVC将哪些属性用作选项标记中的Text和Value。
发布于 2009-06-28 23:15:45
或者,您可以创建一个类,该类将保存选择列表,然后将该类作为视图模型返回。我认为这是一种更优雅的方法,而不是ViewData。
public class MyFormViewModel
{
public SelectList Friends { get; set; }
}然后在你的ActionResult
MyFormViewModel fvm = new MyFormViewModel();
fvm.Friends = new SelectList(myList, "UserName", "NickName");在你看来
<%= Html.DropDownList("ToUserName", Model.Friends, new { @class = "field" })%>https://stackoverflow.com/questions/1055103
复制相似问题