如果我正在使用这个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将出现在其姓名旁边?我需要此功能,因为某些员工可能有相同的名字。
答案 0 :(得分:0)
获得要求的一种方法是使用
select e.FullName + " (" + e.ID + ")"
在查询的源位置将这些值连接在一起。
并删除Distinct()
,因为它是不必要的。
P.S。更广泛地说,下拉列表确实应该使用ID来标识所选项目。因此,应该为您的SelectList传递一个SelectListItem列表(这些列表可以同时包含ID和显示值),而不是简单的字符串列表。这样,当将表单提交回服务器时,您可以确切确定选择了哪个雇员。您希望Razor呈现诸如<option id="2">Joe Bloggs (2)</option>
之类的选项,以便“ 2”将成为提交回服务器的值。显示值仅供用户使用,在发送回数据时不是很有用。如果您进行一些搜索,很快就会发现创建和使用SelectListItems的示例。