2014-03-25 43 views
0

我在VS 2012中使用实体框架与本地数据库一起玩MVC 4。在下拉列表中组合两个数据库列

在我的客户详细信息编辑页面中,我有一个显示客户姓氏的下拉框。此剃刀代码是

<div class="editor-label"> 
     @Html.LabelFor(model => model.CustomerID, "Customer") 
    </div> 
    <div class="editor-field"> 
     @Html.DropDownList("CustomerID", String.Empty) 
     @Html.ValidationMessageFor(model => model.CustomerID) 
    </div> 

我的客户数据库表具有以下设置。

[CustomerID] INT   IDENTITY (1, 1) NOT NULL, 
    [LastName]  NVARCHAR (MAX) NULL, 
    [FirstMidName] NVARCHAR (MAX) NULL, 
    [JoinDate]  DATETIME  NOT NULL, 
    [Email]  NVARCHAR (MAX) NULL, 
    [Address]  NVARCHAR (MAX) NULL, 
    CONSTRAINT [PK_dbo.Customer] PRIMARY KEY CLUSTERED ([CustomerID] ASC)); 

如何在下拉菜单中同时使用firstmidname和lastname?

+0

通常你必须创建视图模型通过视图和控制器之间的数据。所以这也是一个选择。另外,如果你不想用这个或T.Rahgooy'答案,你可以尝试'Konrad Gadzina'答案在这里 - http://stackoverflow.com/questions/16099258/how-to-generate-dropdownlist-在-ASP净MVC剃刀。很确定,如果你连接三个字符串,它将起作用。 – Leron

回答

1

使用视图模型,这和你的SelectList存储为视图模型的属性Customer类创建一个属性:

public ViewModel 
{ 
    public int CustomerID { get; set; } 
    public IList<SelectListItem> Customers { get; set; } 

    public ViewModel() { 
     this.Customers = new List<SelectListItem>(); 
    } 
} 

在你的控制器填充客户选择列表:

​​

和您的看法:

@model ViewModel 

@Html.DropDownListFor(x => x.CustomerID, Model.Customers, "Please select a customer...") 
0

您可以在未映射到数据库这样

public string FullName{ get{ return FirstMidName + " " + LastName;}} 
1

在控制器:

ViewBag.CustomerID= new SelectList((from s in db.customer.ToList() 
           select new 
            { 
            CustomerID= s.CustomerID, 
            FullName = s.LastName+ " " + s.FirstMidName 
            }), 
     "CustomerID", 
     "FullName", 
     null); 

鉴于:

@Html.DropDownList("CustomerID", null, htmlAttributes: new { @class = "form-control" })