下拉列表组合值

时间:2013-03-04 23:17:44

标签: c# .net asp.net-mvc entity-framework

是否可以组合实体的下拉列表值。

假设我有一个姓氏和名字的人员班级

我试过这样做:

ViewBag.uservalues = new SelectList(db.Persons, "ID", "FirstName" + " " + "LastName");

但是这会出错。

3 个答案:

答案 0 :(得分:2)

您对SelectList构造函数的调用

new SelectList(db.Persons,"ID", "FirstName"+" " + "LastName");

使用this overload,它需要绑定ViewModel中的公共字段或属性的名称,并且您的ViewModel中可能没有名为“FirstName LastName”的字段或属性

ViewModel类中添加一个属性,用于连接两个字段(称之为FirstAndLastName),并在SelectList调用中按名称指定该属性。

new SelectList(db.Persons,"ID", "FirstAndLastName");

答案 1 :(得分:0)

由于实体框架创建了部分类,因此您应该在具有要使用的派生属性的同一名称空间中创建另一个部分类。

如果实体fraemwork创建了一个类:

public partial class Person
{
    public String FirstName {get;set;}
    public String LastName{get;set;}
    public Int32 ID{get;set;}
}

创建一个新的分部类

public partial class Person
{
    public String FullName {get{ return this.FirstName + " " + this.LastName}}
}

并将其存储在项目某处的另一个文件夹中(但具有相同的命名空间)

答案 2 :(得分:0)

var query = from c in db.Persons
            select new { id = c.ID,Names = c.FirstName + " " + c.LastName };

ViewBag.personid = new SelectList(query, "ID", "Names");