【问题标题】:The model item passed into the dictionary is of type 'System.Collections.Generic.List, how to handel?传入字典的模型项是'System.Collections.Generic.List'类型,如何处理?
【发布时间】:2021-04-30 06:42:24
【问题描述】:

**错误:**传入字典的模型项的类型为“System.Collections.Generic.List1[System.Int32]', but this dictionary requires a model item of type 'System.Collections.Generic.ICollection1[SlotIdentificationSystem.Models.User_Register_Event]”。


型号

namespace SlotIdentificationSystem.Models

{

public class User_Register_Event
{
    [Key]
    public int Id { get; set; }

    public int UserTableId { get; set; }
    public virtual UserTable UserTable { get; set; }

    public int SectionId { get; set; }
    public virtual Section Section { get; set; }
    public int EventTableId { get; set; }
    public virtual EventTable EventTable { get; set; }
    public int TermId{ get; set; }
    public virtual Term Term { get; set; }

}

}


控制器

 public ActionResult ShowAllDetail(int UserTableId,int UserTableId2)     //bb1234  //bb4567
    {

        var data = db.User_Register_Events.Where(x => x.UserTable.Id == UserTableId).Select(x => x.EventTable.Slot.Slot_Id).ToList();
           //data eg [11,12,13.....]
        var data2 = db.User_Register_Events.Where(x => x.UserTable.Id == UserTableId2).Select(x => x.EventTable.Slot.Slot_Id).ToList();

        //data2 eg [11,42,22.....]
      
        List<int> AllSlots = db.Slots.Select(x => x.Slot_Id).ToList();
              
        var result = AllSlots.Except(data.Union(data2)).ToList();
        return View(result);
    

          eg. //result=[72,19,41,44,...etc


    }

CSHTML

我必须在 cshtml 中显示 result 详细信息,但出现 defined 错误。在调试模式下,我在控制器中得到了我想要的结果,但是一旦它移动到查看错误就来了.....在这种情况下需要帮助

【问题讨论】:

    标签: c# asp.net .net asp.net-mvc razor


    【解决方案1】:

    您有错误,因为您确实返回了 slotIds 列表。试试这个:

    var data = db.User_Register_Events
    .Include(i=>i.EventTable)
    .ThenInclude(i=>i.Slot)
    .Where(x => x.UserTable.Id == UserTableId
     || x.UserTable.Id == UserTableId2).ToList();
      
    
    var AllSlots = db.Slots.Select(x => x.Slot_Id).ToArray();
                  
     var result = data.Where(item =>!AllSlots.Contains(item.EventTable.Slot.Slot_Id))
    .ToList();
    
     return View(result);
    
    

    我只是不明白你为什么使用 var AllSlots = db.Slots.Select(x => x.Slot_Id)?您正在选择所有插槽,您的结果将始终为空。 试试这个:

    //var data = db.User_Register_Events
    //.Include(i=>i.EventTable)
    //.ThenInclude(i=>i.Slot)
    //.Where(x => x.UserTable.Id == UserTableId
    // || x.UserTable.Id == UserTableId2).ToList();
    //var AllSlots = db.Slots.Select(x => x.Slot_Id).ToArray();
                  
     var data = db.User_Register_Events
    .Where(x => x.UserTable.Id == UserTableId
     || x.UserTable.Id == UserTableId2).ToList();
    
     return View(data);
    

    【讨论】:

    • 又报错了,我也更新了model类,请在post上再看看
    • 我想看看你的看法。
    猜你喜欢
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多