在选择列表中连接两个字段(c#)

本文关键字:选择 两个 字段 连接 列表 | 更新日期: 2023-09-27 18:08:51

我使用viewbag来创建一个选择列表,我想显示两个连接在一起的字段。然而,在我看来,它正在崩溃。下面是viewbag代码:

ViewBag.PackageId = new SelectList(db.Packages.Where(p => p.status == "A"), "u_package_id", "u_package_id" + "'-'" + "package_nme");

在选择列表中连接两个字段(c#)

应该可以了

ViewBag.PackageId = db.Packages.Where(p => p.status == "A")
    .Select(p => new SelectListItem
    {
        Text = p.u_package_id + "-" + p.package_nme,
        Value = p.u_package_id
    };

SelectList构造函数的第二个和第三个参数是字符串,必须匹配你的模型中的属性名称(在你的情况下,你没有一个名为"u_package_id-package_nme"的属性,因此错误)。

在控制器中,生成SelectListItem

的集合
ViewBag.PackageList = db.Packages.Where(p => p.status == "A").Select(p => new SelectListItem()
{
    Value = p.u_package_id, // may need .ToString() depending on the property type
    Text = string.Format("{0}-{1}", p.u_package_id, p.package_nme)
}

旁注:建议你命名你的属性,以反映他们是什么(即它的项目的集合,而不是一个ID,所以PackageList,而不是PackageId),这将是必要的,无论如何,如果你绑定的模型包含一个名为PackageId的属性

多亏了deramko,我有了答案。他已经完成了99%的任务。下面是最后的代码:

ViewBag.PackageId = db.Packages.Where(p => p.status == "A")
      .Select(p => new SelectListItem
      {
             Text = p.u_package_id + "-" + p.package_nme,
             Value = p.u_package_id.ToString()
      });