сетка фильтрации с диапазоном дат и времени asp.net mvc - PullRequest
0 голосов
/ 15 октября 2018

Я новичок в asp.net MVC.Я пытаюсь создать приложение, которое позволяет фильтровать сетку данных.У меня есть ошибка, когда я хочу отфильтровать данные на основе даты (в моем приложении поле «ask_date»).Я создал 2 параметра в контроллерах: DateTime SelectedDateStart, DateTime SelectedDateEnd.В контроллерах я использую следующие параметры:

    public ActionResult Index(string SortOrder, string SelectedDesk, string SelectedProgramme, string SelectedCountry, DateTime SelectedDateStart, DateTime SelectedDateEnd)
    {
        var missions = from s in db.missions_supportmission
                       select s;

        //Filtres 
        if (!String.IsNullOrEmpty(SelectedDesk))
        {
            missions = db.missions_supportmission.Include(s => s.organization_desk).Where(a => a.desk_id == SelectedDesk);
        }
        if (!String.IsNullOrEmpty(SelectedProgramme))
        {
            missions = db.missions_supportmission.Include(s => s.organization_programme).Where(a => a.programme_id== SelectedProgramme);
        }
        if (!String.IsNullOrEmpty(SelectedCountry))
        {
            missions = db.missions_supportmission.Include(s => s.organization_hi_country).Where(a => a.country_id == SelectedCountry);
        }
        //Filtres dates
        missions = db.missions_supportmission.Where(a => a.asked_date > SelectedDateStart).Where(a => a.asked_date < SelectedDateEnd);
        ViewBag.SelectedDateStart = SelectedDateStart;
        ViewBag.SelectedDateEnd = SelectedDateEnd;

        return View(missions.ToList());
    }

В представлении у меня есть это:

    <h3>Date</h3>
    <div class="form-group">
        <label class="control-label col-md-4" for="Date">De</label>
        <div class="col-md-8">
            <input type="date" class="form-Date" id="id" value="ViewBag.DateStart" onchange="form.submit();">
        </div>
        <label class="control-label col-md-4" for="Date">A</label>
        <div class="col-md-8">
            <input type="date" class="form-Date" id="id" value="ViewBag.DateEnd" onchange="form.submit();">
        </div>
    </div>

В классе у меня есть это:

    public partial class missions_supportmission 
    {public int id { get; set; }
    public System.DateTime asked_date { get; set; }

Когда я отлаживаю, у меня появляется следующая ошибка:

"System.ArgumentException: словарь параметров содержит пустую запись для параметра 'SelectedDateStart' ненулевого типа 'System.DateTime' для метода 'Индекс System.Web.Mvc.ActionResult (System.String, System.String, System.String, System.String, System.DateTime, System.DateTime) 'в' MissionsDF.Controllers.MissionsController '. Необязательный параметр должен быть ссылкойtype, обнуляемый тип или быть объявленным как необязательный параметр. Nom du paramètre: parameters "

Спасибо за помощь!

1 Ответ

0 голосов
/ 02 ноября 2018

Я нашел решение.Я решил объявить параметры "SelectedDateStart" и "SelectedDateEnd" как DateTime? и поставить проверку на ноль в контроллере следующим образом (тем временем я решил заменить мешки просмотра методом viewmodel):

if (model.SelectedDateStart.HasValue && model.SelectedDateEnd.HasValue)
        {
            model.OnePageOfMissions = db.missions_supportmission
                     .Where(a => a.asked_date > model.SelectedDateStart && a.asked_date<model.SelectedDateEnd)
                     .OrderBy(a => a.asked_date)
                     .Select(s => s).ToPagedList(pageNumber, 10);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...