【发布时间】:2017-06-22 16:26:06
【问题描述】:
我有这样的课:
public class MyClass
{
public SelectList saleRange = new SelectList(new[]
{
new SelectListItem { Selected = true ,Text = "--- Select date range ---", Value = "0" },
new SelectListItem { Selected = false, Text = "7 days", Value = "7" },
new SelectListItem { Selected = false, Text = "14 days", Value = "14" },
new SelectListItem { Selected = false, Text = "21 days", Value = "21" },
new SelectListItem { Selected = false, Text = "30 days", Value = "30" },
}, "Value", "Text");
}
我的行动:
public ActionResult Index()
{
var model = new MyClass();
return View(model);
}
视图看起来像这样:
@Html.DropDownListFor(m => m.saleRange, (IEnumerable<SelectListItem>)Model.saleRange,new { @class= "select2" , @style = "width:95%;border-left:2px solid #eee" })
但是我收到了这个错误:
Unable to cast object of type 'ServiceStack.Html.SelectList' to type 'System.Collections.Generic.IEnumerable`1[System.Web.Mvc.SelectListItem]'.
我在这里做错了什么?如何使用硬编码值从我的视图模型中填充下拉列表?
【问题讨论】:
-
只需删除演员表
(IEnumerable<SelectListItem>) -
然后我得到一个错误:编译器错误消息:CS1503:参数 3:无法从 'ServiceStack.Html.SelectList' 转换为 'System.Collections.Generic.IEnumerable
' -
但是,您确实需要模型上的一个属性来存储所选项目的值。
DropDownListFor()的第一个参数应该是这样的 -
@maccettura 你的意思是一个整数值?
-
附带说明,使用
new SelectList(...从第一个生成相同的IEnumerable<SelectListItem>是毫无意义的额外开销。并且您不能对 SelectList 和绑定到的属性使用相同的属性。
标签: c# asp.net asp.net-mvc c#-4.0 asp.net-mvc-5