Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 连接选择列表(C)中的两个字段_C#_Asp.net Mvc_Viewbag_Selectlist - Fatal编程技术网

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

C# 连接选择列表(C)中的两个字段,c#,asp.net-mvc,viewbag,selectlist,C#,Asp.net Mvc,Viewbag,Selectlist,我使用一个viewbag来创建一个选择列表,我想显示连接在一起的两个字段。然而,这与我的观点大相径庭。以下是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 =

我使用一个viewbag来创建一个选择列表,我想显示连接在一起的两个字段。然而,这与我的观点大相径庭。以下是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构造函数的第2个和第3个参数是字符串,必须与模型中的属性名称相匹配,如果您没有名为u_package\u id-package\n的属性,则会出现错误

在控制器中,生成SelectListItem的集合


旁注:建议您命名属性以反映它们是什么,即它是一个项目集合,而不是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()
      });

如果您收到任何错误消息怎么办?是否有可以显示的堆栈跟踪?SelectList构造函数的第2个和第3个参数是字符串,必须与模型中的属性名称匹配(如果不匹配),因此会出现错误。而是生成一个SelectListItem集合,在其中设置值和文本属性是否为此处使用的未配对单引号?'-'@斯蒂芬·穆克-你反映了我的下一个评论主题:@斯蒂芬·穆克,我猜这就是问题所在。但是,我该怎么做呢?你有一个简单的例子吗?当然,很快会添加一个答案。如果我需要为选择列表项指定一个默认值,我将如何实现这一点。
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()
      });