Как я могу исправить эту модель MVC, чтобы включить фильтр даты, который мне нужен? - PullRequest
0 голосов
/ 05 июля 2019

Итак, у меня есть список клиентов, которые я хотел бы отфильтровать по дате начала и окончания, однако мой фильтр по какой-то причине не работает. Вы можете помочь?

Моя модель

public class ClientHistoryViewModel {
    public ClientHistoryViewModel()
    {
      History = new List<ClientHealthEntry>();
    }

    [Display(Name = "Date Start")]
    public DateTime? DateFrom { get; set; }


    [Display(Name = "Date End")]
    public DateTime? DateTo { get; set; }

    public virtual List<ClientHealthEntry> History { get; set; }
}

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

public IActionResult ClientHistory(int selectedClientId)
{
    ClientHistoryViewModel vm = new ClientHistoryViewModel();

    if (selectedClientId == 0)
      vm.History = _context.ClientHealthEntry.ToList();
    else
        vm.History = _context.ClientHealthEntry.Where(c => c.ClientID == selectedClientId).ToList();

    return View(vm);
}

Я просто хочу иметь возможность фильтровать список клиентов, которые у меня есть, по заданным пользователем датам, указанным при входе. Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 05 июля 2019

В этом ответе предполагается, что информация о клиенте была успешно сохранена в базе данных и что ваш контекстный класс работает правильно:

Для метода контроллера вы можете использовать

 public IActionResult ClientHistory(DateTime startDate, DateTime endDate)

 {
     ClientHistoryViewModel vm = new ClientHistoryViewModel()
     {
         History = _context.ClientHealthEntry.Where(c => c.DateFrom == startDate && c.DateTo== endDate).ToList();

         return View(vm);
     };
 }

В приведенном выше коде пользователь вводит желаемую дату начала и окончания, а метод фильтрует список на основе этой даты начала и окончания.

Несмотря на то, что я написал вышеописанный метод, я бы порекомендовал создать класс Repository для фильтрации. Это сделает ваш контроллер более компактным и отделит детали доступа к базе данных от деталей логики контроллера.

Для получения дополнительной информации о том, где выполнять фильтрацию, ознакомьтесь с Post

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...