gpt4 book ai didi

asp.net-mvc - 我在使用 asp.net-mvc 下拉列表时做错了什么?

转载 作者:行者123 更新时间:2023-12-04 11:45:09 25 4
gpt4 key购买 nike

我在我的 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;
}

还有我的 Controller
 public ActionResult Create()
{
var mesurementTypes = consRepository.FindAllMeasurements().AsEnumerable();
ViewData["MeasurementType"] = new SelectList(mesurementTypes,"Id","Name");
return View();
}

我的 create.aspx 有这个,
<p>
<label for="MeasurementTypeId">MeasurementType:</label>
<%= Html.DropDownList("MeasurementType")%>
<%= Html.ValidationMessage("MeasurementTypeId", "*") %>
</p>

当我执行这个时,我收到了这些错误,
DataBinding: 'System.Web.Mvc.SelectListItem' does not contain a 
property with the name 'Id'.

最佳答案

在您的 Controller 中,您正在创建一个新的 SelectList来自 IEnumerable<SelectListItem>这是不正确的,因为您已经指定了 ValueText特性。

您有两个选择:

public ActionResult Create()
{
var mesurementTypes = consRepository.FindAllMeasurements();
ViewData["MeasurementType"] = mesurementTypes;
return View();
}

或者:
public ActionResult Create()
{
ViewData["MeasurementType"] = new SelectList(db.MeasurementTypes, "Id", "Name");
return View();
}

还有第三种也是首选的使用强类型 View 的方法:
public ActionResult Create()
{
var measurementTypes = new SelectList(db.MeasurementTypes, "Id", "Name");
return View(measurementTypes);
}

并在 View 中:
<%= Html.DropDownList("MeasurementType", Model, "-- Select Value ---") %>

关于asp.net-mvc - 我在使用 asp.net-mvc 下拉列表时做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2756208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com