我有点卡住,我有一个下拉,我试图将同一个表中的两个字段组合成。它有点工作,这是我得到的: The offending drop down list
正如你所看到的那样,我正在拉扯我不想要的东西,我不会拉我的姓。
这是我的编辑控制器:
var DocList =
db.Doctors
.Select(s => new
{
Value = s.ID,
FirstN = s.FirstName,
SurN = s.Surname,
})
;
ViewBag.Doctor = new SelectList(DocList, "FirstN", "SurN", episode.Doctor.ID);
这是我的剃须刀片段:
@Html.DropDownList("docTest")
你们认为这里出了什么问题?提前致谢! :)
答案 0 :(得分:0)
看起来你可能需要做这样的事情(它会给下拉列表显示" docTest")
@Html.DropDownList("docTest", (SelectList)ViewBag.DoctorOLD, "Place Holder Text", new { @class = "someClass" })
但是你可能需要不同的功能,我无法从提供的代码量来判断。如果你需要将下拉值绑定到模型属性,你也可以考虑使用@html.DropDownListFor
。
This SO post here很好地解释了html helper下拉列表。
答案 1 :(得分:0)
您没有将值绑定到下拉列表。使用下面的代码来获取值
@Html.DropDownList("docTest",(IEnumerable<SelectListItem>)ViewBag.DoctorOLD)
答案 2 :(得分:0)
好的,这里的解决方案仍然非常绿色,所以在我解开的时候知道重载。让我试着解释(并纠正我,如果我错了)
好的,我们调用我们的列表。现在我们的第一个重载是ieneumerable,这会在我们的列表中获得我们想要的一堆东西。接下来我们需要我们的值字段,它是表中其他表用来链接到它的列,在大多数情况下是ID列。
接下来是字符串。在我的情况下,它的“FullName”基本上由我的Doctors表中的FirstName和Surname组成。
无论如何,如果你像我这样的阅读障碍只是看看下面的代码并将其分开:)
控制器:
ViewData["docFullDetails"] =
new SelectList((from s in db.Doctors
select new
{
FullName = (s.FirstName + s.Surname),
ID = s.ID
}),
"ID",
"FullName");
视图:
<div class="form-control">
@Html.DropDownList("docFullDetails")
@Html.ValidationMessageFor(model => model.Doctor)
</div>
答案 3 :(得分:0)
在您的控制器中,您应该填写下拉列表,如
ViewBag.Doctors = new SelectList(db.Doctors.Select(d => new { d.Id, FullName = d.FirstName + " " + d.LastName }),
"Id", "FullName");
然后在视图中使用剃须刀创建下拉列表
@Html.DropDownList("DoctorId", ViewBag.Doctors as SelectList, "Select doctor...", new { @class = "form-control" })
您正在创建的表单模型可能应该具有您从下拉列表中绑定的DoctorId属性
@Html.DropDownListFor(m => m.DoctorId, ViewBag.Doctors as SelectList, "Select doctor...", new { @class = "form-control" })