在您尝试这样做时,您犯了一些基本错误。首先尝试了解 MVC 的幕后情况以及这些关键字的含义。
你已经定义了
@model IEnumerable<MvcApplication1.customer>
那么你有以下代码
@Html.DropDownListFor(m=>m.name, new SelectList(Model,"id","name"));
在这里,您m
表示您已初始化为IEnumerable<MvcApplication1.customer>
. 您正在尝试访问 IEnumerable ( m => m.name
)中名为 name 的属性,IEnumerable
但没有此类属性。如果您出于某种原因想要访问您的模型,您@model
应该是一个 Customer 对象。然后你可以像访问它@Html.DropDownListFor(m=>m.name, new SelectList(Model,"id","name"));
在评论中,您说此代码@Html.DropDownList("name", new SelectList(Model, "id", "name"));
工作正常。是的,它有效,因为您正在使用 Id 创建一个新的 html 选择元素,"name"
并且它列出了Model
作为选择选项中的任何内容。
好的,足够的解释。
这是我为您的问题建议的解决方案。
在您的控制器操作中,按如下方式实现代码流。
var dropdownDataList = //select your data from the database or any place as a list;
var dropdownOptions = dropdownDataList.Select(d => new {
id = d.valueforid,
name = d.valueforname
});
ViewBag.DropdownListOptions = new SelectList(dropdownOptions, "id", "name");
return View();
现在在您看来,请执行以下操作。
@{
Layout = null;
}
@model MvcApplication1.customer
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
@Html.DropDownListFor(m=>m.name, (SelectList)ViewBag.DropdownListOptions)
</div>
</body>
</html>
尝试浏览 MSDN 中的这些文章。
http://msdn.microsoft.com/en-us/library/gg416514(v=vs.108).aspx
希望这可以帮助。
干杯,阿米拉