【发布时间】:2016-12-03 07:12:35
【问题描述】:
我刚刚在 Stack Overflow 上创建了我的帐户,所以这是我第一次提出问题:我的 DropDownList 有问题。我不知道我做错了什么,因为我对 ASP-NET 和 MVC 5 比较陌生,所以请原谅我做的任何可怕的事情
控制器:
public ActionResult typeDevices()
{
List<SelectListItem> typelist = new List<SelectListItem>();
DropDownModel type = new DropDownModel();
type.TypeDevicesId = 1;
type.TypeDevicesValue = "typeDevice1";
typelist.Add(new SelectListItem() { Value = type.TypeDevicesValue, Text = type.TypeDevicesId.ToString() });
type.TypeDevicesId = 2;
type.TypeDevicesValue = "typeDevice2";
typelist.Add(new SelectListItem() { Value = type.TypeDevicesValue, Text = type.TypeDevicesId.ToString() });
type.TypeDevicesId = 3;
type.TypeDevicesValue = "typeDevice3";
typelist.Add(new SelectListItem() { Value = type.TypeDevicesValue, Text = type.TypeDevicesId.ToString() });
SelectList listvalues = new SelectList(typelist, "Text", "Value");
ViewBag.DropDownValues = listvalues;
ViewData["DropDownData"] = new SelectList(listvalues, "Text", "Value");
return View();
}
型号:
public class DropDownModel
{
public int TypeDevicesId { get; set; }
public string TypeDevicesValue { get; set; }
}
索引:
<p>
<label class="field" for="Type">Type:</label>
@Html.DropDownList("DropDownData", (SelectList)ViewBag.DropDownValues))
</p>
此代码来自我正在关注的视频。 Link to video
我得到的错误是
没有具有键“DropDownData”的“IEnumerable
”类型的 ViewData 项
【问题讨论】:
-
从第一个创建第二个相同的
SelectList是毫无意义的额外开销 - 它只是ViewBag.DropDownValue = typelist;并且您不能将<select>绑定到IEnumerable<SelectListItem>所以ViewData["DropDownData"] = new SelectList(listvalues, "Text", "Value");没有意义。如果您想选择第二个选项,它的ViewData["DropDownData"] = 2;。但是你的代码是糟糕的做法,我建议你阅读this question/answer -
感谢建设性的批评,我去看看:) 出于好奇,如果我想从数据库中取出一个项目,我应该怎么做?假设 type_devices 与表 computer_tabel 有关系。我希望它选择与计算机 ID 相关的正确的?
-
我给你的链接显示了如何做到这一点:)
-
好的,谢谢!
标签: asp.net-mvc razor