Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.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#_.net_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# 下拉列表组合值

C# 下拉列表组合值,c#,.net,asp.net-mvc,entity-framework,C#,.net,Asp.net Mvc,Entity Framework,是否可以合并实体中的dropdownlist值 假设我有一个姓和名的person类 我尝试过这样做: ViewBag.uservalues = new SelectList(db.Persons, "ID", "FirstName" + " " + "LastName"); 但是这会抛出一个错误。您对SelectList构造函数的调用 new SelectList(db.Persons,"ID", "FirstName"+" " + "LastName"); 使用,这需要绑定到ViewMod

是否可以合并实体中的dropdownlist值

假设我有一个姓和名的person类

我尝试过这样做:

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

但是这会抛出一个错误。

您对
SelectList
构造函数的调用

new SelectList(db.Persons,"ID", "FirstName"+" " + "LastName");
使用,这需要绑定到
ViewModel
中的公共字段或属性的名称,而ViewModel中可能没有名为“FirstName LastName”的字段或属性

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

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

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

如果实体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}}
}

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

视图代码是什么样子的?
@Html.DropDownList(“personid”,String.Empty)@Html.ValidationMessageFor(model=>model.personid)
因此您在两个不同的位置获得了数据,即ViewModel和ViewBag?我得考虑一下。看起来不太干净。再说一次,它不需要任何魔法弦,所以。
var query = from c in db.Persons
            select new { id = c.ID,Names = c.FirstName + " " + c.LastName };

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