我正在使用Entity Framework在本地数据库中使用VSC中的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和last name?
答案 0 :(得分:1)
为此使用视图模型并将SelectList存储为视图模型的属性:
public ViewModel
{
public int CustomerID { get; set; }
public IList<SelectListItem> Customers { get; set; }
public ViewModel() {
this.Customers = new List<SelectListItem>();
}
}
在您的控制器中填写客户选择列表:
var vm = new ViewModel();
vm.Customers = _customerService.All()
.Select(x => new SelectListItem {
Value = x.CustomerID.ToString(),
Text = x.FirstMidName + " " + x.LastName
})
.ToList();
return View(vm);
并在您看来:
@model ViewModel
@Html.DropDownListFor(x => x.CustomerID, Model.Customers, "Please select a customer...")
答案 1 :(得分: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" })
答案 2 :(得分:0)
您可以在客户类中创建一个未映射到数据库的属性,如此
public string FullName{ get{ return FirstMidName + " " + LastName;}}