当v.ID是我模型中的整数属性时,有人可以帮我弄清楚如何做到这一点吗?
ViewBag.VendorID = new SelectList(db.Vendors.Select(v => new SelectListItem
{
Value = v.ID,
Text = string.Format("{0} {1} {2}", v.Title, v.Firstname, v.Secondname)
}), "Text", "Value");
return View();
我正在尝试将模型中的多个属性组合到下拉列表的文本中。这显示了编译时错误,但是如果我将其更改为
ViewBag.VendorID = new SelectList(db.Vendors.Select(v => new SelectListItem
{
Value = v.ID.ToString(),
Text = string.Format("{0} {1} {2}", v.Title, v.Firstname, v.Secondname)
}), "Text", "Value");
然后从我看来这一行
@Html.DropDownList("VendorID", (SelectList)ViewBag.VendorID)
引发运行时错误:
LINQ to Entities无法识别方法'System.String ToString()'方法,并且此方法无法转换为商店表达式。
关于如何解决这个看似简单的任务的任何想法
谢谢大家。
杰森。
答案 0 :(得分:3)
您无法在Linq-to-SQL中直接使用string.Format
。您需要首先枚举列表:
ViewBag.VendorID = db.Vendors.ToList().Select(v => new SelectListItem
{
Value = v.ID,
Text = string.Format("{0} {1} {2}", v.Title, v.Firstname, v.Secondname)
});
return View();
请注意上面添加了.ToList()
。我还删除了SelectList
构造函数,因为DropDownList
已经接受了您自己生成的IEnumerable<SelectListItem>
。