0

当 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()”方法,并且该方法无法转换为存储表达式。

关于如何解决这个看似简单的任务的任何想法

谢谢大家。

杰森。

4

1 回答 1

3

您不能string.Format直接在 Linq-to-SQL 中使用。您需要先枚举列表:

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>你自己生成的已经。

于 2013-09-23T09:37:35.390 回答