新的SelectList组合到字段但只获得一个

时间:2016-06-09 03:22:59

标签: c# entity-framework model-view-controller

我有点卡住,我有一个下拉,我试图将同一个表中的两个字段组合成。它有点工作,这是我得到的: 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")

你们认为这里出了什么问题?提前致谢! :)

4 个答案:

答案 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" })