代码之家  ›  专栏  ›  技术社区  ›  amarcy

Asp.NetMVC 2下拉显示系统.Web.MVC。选择列表项

  •  10
  • amarcy  · 技术社区  · 14 年前

    当用户编辑维护记录时,我希望有一个表中所有设备ID的下拉列表。

    下拉列表会被填充,并且会填充正确数量的条目,不管它们怎么说 System.Web.MVC.SelectListItem

    下面是生成列表的代码:

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

    以下是.aspx页面中下拉列表的条目:

    %: Html.DropDownList("EquipIDs") %>
    

    下面是我如何从表中生成列表:

    public List<EquipmentID> GetEquipmentIDAsList()
        {
            return db.EquipmentIDs.ToList();
        }
    

    除了指定要在下拉框中显示的文本外,似乎所有内容都正常工作。

    1 回复  |  直到 11 年前
        1
  •  32
  •   Kirk Woll    14 年前

    SelectList SelectListItem 实际上是相互排斥的。你应该用一个 选择列表 未经加工的 IDs )或者不使用 选择列表 一点也不,只是 ViewData["EquipIDs"] 你可列举的 选择列表项

    或者:

    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;