繁体   English   中英

Asp.net MVC下拉列表中的多个字段

[英]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”);

假设您具有FirstNameLastName属性

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM