Asp.net mvc Asp.Net MVC 2下拉列表显示System.Web.MVC.SelectListItem
我有一个包含设备ID列表的表和另一个包含维护记录的表 当用户编辑维护记录时,我希望有一个表中所有设备ID的下拉列表 下拉列表将填充正确数量的条目,但是它们都会显示Asp.net mvc Asp.Net MVC 2下拉列表显示System.Web.MVC.SelectListItem,asp.net-mvc,Asp.net Mvc,我有一个包含设备ID列表的表和另一个包含维护记录的表 当用户编辑维护记录时,我希望有一个表中所有设备ID的下拉列表 下拉列表将填充正确数量的条目,但是它们都会显示System.Web.MVC.SelectListItem,而不是ID的值 以下是生成列表的代码: public ActionResult Edit(int id) { MaintPerformed maintPerformed = maintPerformedRepository.GetMaintPerformed(id);
System.Web.MVC.SelectListItem
,而不是ID的值
以下是生成列表的代码:
public ActionResult Edit(int id)
{
MaintPerformed maintPerformed = maintPerformedRepository.GetMaintPerformed(id);
IList<EquipmentID> IDs = equipmentIDRepository.GetEquipmentIDAsList();
IEnumerable<SelectListItem> selectEquipList =
from c in IDs
select new SelectListItem
{
//Selected = (c.EquipID == maintPerformed.EquipID),
Text = c.EquipID,
Value = c.Sort.ToString()
};
ViewData["EquipIDs"] = new SelectList(selectEquipList, maintPerformed.ID);
return View(maintPerformed);
}
以下是我如何从表中生成列表:
public List<EquipmentID> GetEquipmentIDAsList()
{
return db.EquipmentIDs.ToList();
}
公共列表GetEquipmentIDAsList()
{
返回db.EquipmentIDs.ToList();
}
除了指定要在下拉框中显示的文本外,似乎所有内容都正常工作
我遗漏了什么或没有正确思考什么?
SelectList
和SelectListItem
实际上是相互排斥的。您应该使用一个或另一个。当您将SelectList
的构造函数传递给您的原始数据(IDs
)或根本不使用SelectList
,只需将ViewData[“equipid”]
设置为您的SelectList项的可枚举项即可。如果使用后一种方法,则必须调整代码,以便在SelectListItem的构造函数中设置所选项(正如您所做的,但已注释掉)
要么:
ViewData["EquipIDs"] = new SelectList(IDs, maintPerformed.ID, "EquipID", "Sort");
或:
IEnumerable选择设备列表=
从IDs中的c
选择新的SelectListItem
{
所选=c.EquipID==maintPerformed.EquipID,
Text=c.EquipID,
Value=c.Sort.ToString()
};
ViewData[“设备ID”]=选择设备列表;
谢谢。去掉代码的中间部分,只需将ID发送给SelectList构造函数就可以了。
ViewData["EquipIDs"] = new SelectList(IDs, maintPerformed.ID, "EquipID", "Sort");
IEnumerable<SelectListItem> selectEquipList =
from c in IDs
select new SelectListItem
{
Selected = c.EquipID == maintPerformed.EquipID,
Text = c.EquipID,
Value = c.Sort.ToString()
};
ViewData["EquipIDs"] = selectEquipList;