ASP> NET MVC将两个详细信息连接到下拉列表中

时间:2019-02-12 11:12:59

标签: asp.net-mvc concatenation

如果我正在使用这个Viewbag

ViewBag.employee = (from e in db.Employees
                                    select e.FullName).Distinct();

在此下拉列表中使用

  <div class="form-group">
                @Html.LabelFor(model => model.EmployeeID, "EmployeeID", htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.DropDownList("EmployeeID", new SelectList(ViewBag.employee), "--Select--")
                    @Html.ValidationMessageFor(model => model.EmployeeID, "", new { @class = "text-danger" })
                </div>
            </div>

是否可以串联其他细节?

例如,EmployeesID,这样当您使用下拉列表时,EmployeeID将出现在其姓名旁边?我需要此功能,因为某些员工可能有相同的名字。

1 个答案:

答案 0 :(得分:0)

获得要求的一种方法是使用

select e.FullName + " (" + e.ID + ")"

在查询的源位置将这些值连接在一起。

并删除Distinct(),因为它是不必要的。

P.S。更广泛地说,下拉列表确实应该使用ID来标识所选项目。因此,应该为您的SelectList传递一个SelectListItem列表(这些列表可以同时包含ID和显示值),而不是简单的字符串列表。这样,当将表单提交回服务器时,您可以确切确定选择了哪个雇员。您希望Razor呈现诸如<option id="2">Joe Bloggs (2)</option>之类的选项,以便“ 2”将成为提交回服务器的值。显示值仅供用户使用,在发送回数据时不是很有用。如果您进行一些搜索,很快就会发现创建和使用SelectListItems的示例。