Группируйте события по их датам, а затем по датам и отображайте их в моем частичном представлении. - PullRequest
0 голосов
/ 14 декабря 2018

enter image description here

У меня есть модель со списком событий, который включает дату начала, дату окончания, время начала, время окончания, заголовок и описание.Мне нужно, чтобы они были сгруппированы по дате начала, затем сгруппированы по часу начала и отображены в моем частичном представлении, как прикрепленное изображение.

Вот моя модель:

public int eventID { get; set; }
[DisplayName("Title")]
public string eventTitle { get; set; }

[DisplayName("Description")]
public string PaperDescription { get; set; }

[DisplayName("Location")]
public string ClassLocation { get; set; }

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd MMM yyyy}")]
public DateTime? StartDate { get; set; }

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd MMM yyyy}")]
public DateTime? EndDate { get; set; }

[DataType(DataType.Time)]
public TimeSpan? StartTime { get; set; }

[DataType(DataType.Time)]
public TimeSpan? EndTime { get; set; }

Вот мой контроллер:

public PartialViewResult _Events(DateTime? date)
        {
            var eventList = db.Classes_tbl.Where(x => x.StartDate == date).OrderBy(x => x.StartDate).ToList();            
            return PartialView(eventList);
        }

, а вот мой частичный:

@foreach (var eventClass in Model.classesViewModel)
{

    if (eventClass.classType == ClassType.Event)
    {

    @eventClass.StartTime.GetValueOrDefault().Hours<br />
    @eventClass.EndTime<br />
    @eventClass.ClassTitle<br />
    }
}

Может кто-нибудь помочь мне, пожалуйста?Я очень новичок в MVC и не могу понять, как это сделать.Большое вам спасибо!

1 Ответ

0 голосов
/ 14 декабря 2018

Создайте новую ViewModel EventGroup, затем выберите ваши события и сгруппируйте их по начальной дате, затем передайте эту модель представления вашему представлению

var eventList = events
    .GroupBy(x => x.StartDate).Select(g => new EventGroup
    {
        StartDate = g.Key,
        Events = g.OrderBy(x => x.StartTime).ToList()
    }).ToList();

public class EventGroup
{
    public List<Event> Events { get; set; }
    public DateTime? StartDate { get; set; }
}
public class Event
{
    public int eventID { get; set; }
    [DisplayName("Title")]
    public string eventTitle { get; set; }

    [DisplayName("Description")]
    public string PaperDescription { get; set; }

    [DisplayName("Location")]
    public string ClassLocation { get; set; }

    [DataType(DataType.Date)]
    [DisplayFormat(DataFormatString = "{0:dd MMM yyyy}")]
    public DateTime? StartDate { get; set; }

    [DataType(DataType.Date)]
    [DisplayFormat(DataFormatString = "{0:dd MMM yyyy}")]
    public DateTime? EndDate { get; set; }

    [DataType(DataType.Time)]
    public TimeSpan? StartTime { get; set; }

    [DataType(DataType.Time)]
    public TimeSpan? EndTime { get; set; }
}

<div>
@foreach (var EventGroup in Model.EventGroups)
{
    @EventGroup.StartDate
    @foreach (var Event in EventGroup.Events)
    {
        if (Event.classType == Event.Event)
        {
        @Event.StartTime.GetValueOrDefault().Hours<br />
        @Event.EndTime<br />
        @Event.ClassTitle<br />
        } 
    }    
}         
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...