如何在c#

时间:2019-01-25 05:32:27

标签: c# asp.net-mvc

我创建了一个列表名称AllCalendarEventInfo,其中还有2个列表。当我尝试将列表添加到列表的第一个索引时,它抛出IndexOutOfRangeException

model.AllCalendarEventInfo[i].allEventDates.Add(date);

model.AllCalendarEventInfo[i].allCalendarDates.AddRange(model.AllDateList);
在这两行中

。请帮忙。

这是我的代码:

var i = 0;
model.event_dates = 
_iadminSettingsService.GetEventDatesByEventId(model.event_id);

foreach (var date in model.event_dates)
{
    var addDate = date.event_date_start;
    while (addDate >= date.event_date_start && addDate <= date.event_date_stop)
    {
        model.AllDateList.Add(new CalendarDates
        {
            Id = date.event_id,
            Date = Convert.ToDateTime(addDate)
        });
        if (addDate.HasValue)
        {
            addDate = addDate.Value.AddDays(+1);
        }

    }
    model.AllCalendarEventInfo[i].allEventDates.Add(date);
            model.AllCalendarEventInfo[i].allCalendarDates.AddRange(model.AllDateList);

    model.AllDateList.Clear();
            i++;
}

这是所有型号:

public class CalendarDates
{
    public int Id { get; set; }
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", 
    ApplyFormatInEditMode = true)]
    public DateTime Date { get; set; }
}

public class AllCalendarEventInfo
{
    public AllCalendarEventInfo()
    {
        allCalendarDates = new List<CalendarDates>();
        allEventDates = new List<event_dates>();
    }
    public List<CalendarDates> allCalendarDates { get; set; }
    public List<event_dates> allEventDates { get; set; }
}

public class Event_ViewModel
{
    public Event_ViewModel()
    {
        AllDateList = new List<CalendarDates>();
        AllCalendarEventInfo = new List<AllCalendarEventInfo>();
    }


    public List<event_dates> event_dates { get; set; }
    public List<event_dates> allEventDates { get; set; }
    public List<CalendarDates> AllDateList { get; set; }
    public List<AllCalendarEventInfo> AllCalendarEventInfo { get; set; }

  }

1 个答案:

答案 0 :(得分:0)

您需要添加一个     新的AllCalendarEventInfo

到     model.AllCalendarEventInfo

,然后尝试使用索引器访问它。您甚至试图在列表中添加任何内容之前都试图访问列表中的第一项,因此索引超出范围。

所以一会儿之后的代码块应该以

开始
model.AllCalendarEventInfo.add(new AllCalendarEventInfo());
model.AllCalendarEventInfo[i].allEventDates.Add(date);    model.AllCalendarEventInfo[i].allCalendarDates.AddRange(model.AllDateList);
model.AllDateList.Clear();
        i++;

很抱歉,格式化是通过我的手机