我正在尝试从数据库表中填充下拉列表,并在我的控制器中使用此代码
model.EngineerNameList = new List<Engineers>();
foreach (string Engineer in allData.Select(x => x.EngineerName).Distinct().ToList())
{
model.EngineerNameList.Add(new Engineers() { EngineerName = Engineer });
}
这是在我的下拉列表中返回正确数量的项目,但我得到的是我班上定义的班级名称
public partial class Engineers
{
public int ID { get; set; }
[StringLength(100)]
public string EngineerName { get; set; }
}
我使用以下
在我的视图中显示 <div class="form-group">
<label for="Engineer">Select Engineer:</label>
<select id="Name" name="Name" onchange="this.form.submit()">
@if (Model.EngineerNameList != null)
{
foreach (var Title in Model.EngineerNameList)
{
<option value="@Title" >@Title </option>
}
}
</select>
</div>
我的问题是我无法将类中包含的值放入下拉列表中。这就是我在页面上的内容:
答案 0 :(得分:0)
EngineerNameList
是Engineers
模型的集合,因此当您迭代它时,您将获得Engineers
的对象。这就是您在下拉列表中看到模型的ToString()
表示的原因。
因此,要显示相应的工程师名称,请将代码更新为
<option value="@Title.EngineerName">@Title.EngineerName</option>
答案 1 :(得分:0)
您也可以在MVC中使用此类型与剃刀助手
<select id="Name" name="Name" onchange="this.form.submit()">
@if (Model.EngineerNameList != null)
{
foreach (var Title in Model.EngineerNameList)
{
<option value="@Title.EngineerName">@Title.EngineerName</option>
}
}
</select>
可以替换为
@Html.DropDownListFor("EngineerName", Model.EngineerNameList.Select(Title => new SelectListItem { Text = Title.EngineerName, Value = Title.EngineerName.ToString() }))
渲染后它也会反映相同的HTML代码......