我有一个包含EquipmentID列表的表和另一个包含维护记录的表.
当用户编辑维护记录时,我希望有一个表格中所有设备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);
}
Run Code Online (Sandbox Code Playgroud)
以下是下拉列表的.aspx页面中的条目:
%: Html.DropDownList("EquipIDs") %>
Run Code Online (Sandbox Code Playgroud)
以下是我从表中生成列表的方法:
public List<EquipmentID> GetEquipmentIDAsList()
{
return db.EquipmentIDs.ToList();
}
Run Code Online (Sandbox Code Playgroud)
除了分配要在下拉框中显示的文本外,一切都正常工作.
我错过了什么或没有正确思考?
Kir*_*oll 32
SelectList
而SelectListItem
实际上是相互排斥的.你应该使用一个或另一个.Etiher传递的构造SelectList
的原始数据(IDs
),或不使用SelectList
在所有的,只是让ViewData["EquipIDs"]
你的枚举SelectListItem
.如果采用后一种方法,则必须调整代码,以便在SelectListItem的构造函数中设置所选项(如您所做,但已注释掉).
或者:
ViewData["EquipIDs"] = new SelectList(IDs, maintPerformed.ID, "EquipID", "Sort");
Run Code Online (Sandbox Code Playgroud)
要么:
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;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7468 次 |
最近记录: |