连接 select 列表中的两个字段 (C#)

Concatenate two fields in select list (C#)

我使用 viewbag 创建一个 select 列表,我想显示两个连接在一起的字段。但是,我认为它正在崩溃。这是viewbag代码:

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

这应该有效

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()
      });