ACP*_*ACP 7 asp.net-mvc drop-down-menu
我在我的一个create.aspx中使用了一个下拉列表,但它有些似乎无法正常工作......
public IEnumerable<SelectListItem> FindAllMeasurements()
{
var mesurements = from mt in db.MeasurementTypes
select new SelectListItem
{
Value = mt.Id.ToString(),
Text= mt.Name
};
return mesurements;
}
Run Code Online (Sandbox Code Playgroud)
和我的控制器,
public ActionResult Create()
{
var mesurementTypes = consRepository.FindAllMeasurements().AsEnumerable();
ViewData["MeasurementType"] = new SelectList(mesurementTypes,"Id","Name");
return View();
}
Run Code Online (Sandbox Code Playgroud)
我的create.aspx有这个,
<p>
<label for="MeasurementTypeId">MeasurementType:</label>
<%= Html.DropDownList("MeasurementType")%>
<%= Html.ValidationMessage("MeasurementTypeId", "*") %>
</p>
Run Code Online (Sandbox Code Playgroud)
当我执行这个我得到这些错误,
DataBinding: 'System.Web.Mvc.SelectListItem' does not contain a
property with the name 'Id'.
Run Code Online (Sandbox Code Playgroud)
在你的控制器,你要创建一个新SelectList的IEnumerable<SelectListItem>这是不正确的,因为你已经指定的Value和Text属性.
您有两种选择:
public ActionResult Create()
{
var mesurementTypes = consRepository.FindAllMeasurements();
ViewData["MeasurementType"] = mesurementTypes;
return View();
}
Run Code Online (Sandbox Code Playgroud)
要么:
public ActionResult Create()
{
ViewData["MeasurementType"] = new SelectList(db.MeasurementTypes, "Id", "Name");
return View();
}
Run Code Online (Sandbox Code Playgroud)
还有第三种使用强类型视图的首选方法:
public ActionResult Create()
{
var measurementTypes = new SelectList(db.MeasurementTypes, "Id", "Name");
return View(measurementTypes);
}
Run Code Online (Sandbox Code Playgroud)
并在视图中:
<%= Html.DropDownList("MeasurementType", Model, "-- Select Value ---") %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7731 次 |
| 最近记录: |