Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc Asp.Net MVC 2下拉列表显示System.Web.MVC.SelectListItem_Asp.net Mvc - Fatal编程技术网

Asp.net mvc Asp.Net MVC 2下拉列表显示System.Web.MVC.SelectListItem

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);

我有一个包含设备ID列表的表和另一个包含维护记录的表

当用户编辑维护记录时,我希望有一个表中所有设备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;