![](/img/trans.png)
[英]Asp.net MVC multiple fields in dropdown list failing to postback to database
[英]Asp.net MVC multiple fields in dropdown list
我有一个创建脚手架生成的下拉列表,显示数据库中客户端的名字。
视图看起来像这样
<div class="form-horizontal">
<h4>ProgramClientTbl</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.ClientId, "ClientId", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("ClientId", null, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.ClientId, "", new { @class = "text-danger" })
</div>
</div>
控制器看起来像这样
public ActionResult Create()
{
ViewBag.ClientId = new SelectList(db.ClientsTbls, "Id", "FirstName");
ViewBag.ProgramId = new SelectList(db.ProgramTbls, "Id", "Program");
return View();
}
有没有办法将“LastName”添加到下拉列表中,以便显示多个字段?
我知道这是一个古老的问题,但我遇到了同样的问题,并在最终自己搞清楚之前找到了这个页面。
这是正确的答案:
控制器:
var clients = db.ClientsTbls
.Select(s => new
{
Text = s.FirstName + " " + s.LastName,
Value = s.clientId
})
.ToList();
ViewBag.ClientsList = new SelectList(clients, "Value", "Text");
视图:
@Html.DropDownListFor(model => model.ClientID, (SelectList)ViewBag.ClientsList, new { @class = "form-control" })
你必须更新你的模型:
public class Teacher
{ //...
public string PaternalName { get; set; }
public string MaternalName { get; set; }
public string Name { get; set; }
//... your others columns. Add something like:
public string FullName
{
get
{
return String.Format("{0} {1}, {2}", PaternalName, MaternalName, Name);
}
}
...
}
然后你只需要:
ViewBag.CodigoDocente = new SelectList(db.Docente,“IDteacher”,“FullName”);
假设您具有FirstName
和LastName
属性
var clients = (from c in db.ClientsTbls
select new SelectListItem {
Text = m.FirstName + " " + m.LastName,
Value = m.ID.ToString()
});
ViewBag.ClientsList = new SelectList(clients); // but better to assign this to a property in your view model
然后在你看来
@Html.DropDownLstFor(m => m.ClientID, (SelectList)ViewBag.ClientList, new { @class = "form-control" })
抱歉,我无法添加对Jason和Stephen Answer的评论,但我试图将JasonBlufire和Stephen Muecke的答案结合起来,这很有效。
var clients = (from c in db.ClientsTbls
select new SelectListItem {
Text = m.FirstName + " " + m.LastName,
Value = m.ID.ToString()
});
ViewBag.ClientsList = new SelectList(clients,"Value", "Text");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.