Невозможно установить DateTime с полем ввода. Всегда возвращает DateTime.MinValue - PullRequest
0 голосов
/ 03 ноября 2019

Предполагается, что моя программа имеет фильтр даты и выдает статью с правильной датой. Но когда я вписываю любую дату в поле DateTime, мои значения не меняются и всегда имеют значение DateTime.MinValue. Я не знаю почему и как я могу это исправить.

Вид:

    <form method="get">
    <div class="form-inline form-group">
        <label class="control-label"> since: </label>
        @Html.TextBox("startdate", Model.StartDate, htmlAttributes: new { @class = "form-control" })
        <label class="control-label"> till: </label>
        @Html.TextBox("enddate", Model.EndDate, htmlAttributes: new { @class = "form-control" })


        <input type="submit" value="Filtr" class="btn btn-default" />
    </div>
</form>

Модель:

 public class MainView
{
    public IEnumerable<Article> Articles { get; set; }
    public string Name { get; set; }
    public SelectList Categories { get; set; }
    public DateTime StartDate { get; set; }
    public DateTime EndDate { get; set; }
    public List<int> Tags { get; set; }
}

И контроллер:

 public  IActionResult Index(int? category, string name, DateTime startdateTime, DateTime enddateTime)
      {


        IQueryable<Article> articles = db.Articles.Include(p => p.Category);
           if (category != null && category != 0)
           {
               articles = articles.Where(p => p.CategoryId == category);
           }

           if (!String.IsNullOrEmpty(name))
           {
               articles = articles.Where(p => p.Name.Contains(name));
           }


           //if (startdateTime == null) startdateTime = DateTime.MinValue;
           if (enddateTime ==DateTime.MinValue) enddateTime = DateTime.Now;
            articles = articles.Where(p => p.Date>=startdateTime && p.Date <= enddateTime);               

         List<Category> categories = db.Categories.OrderBy(p=>p.Name).ToList();
           categories.Insert(0, new Category { Name = "All", Id = 0 });

        MainView viewModel = new MainView
        {

            Name = name,
            StartDate = startdateTime,
            EndDate = enddateTime

        };
           return View(viewModel);
      }

1 Ответ

1 голос
/ 03 ноября 2019

Я думаю, что ваша проблема вызвана несоответствием имен.

На ваш взгляд, вы объявляете текстовое поле с именем startdate. В вашем контроллере вы ожидаете его с параметром с именем startdateTime.

То же самое несоответствие касается конечной даты.

Когда вы сопоставляете эти имена, привязка параметров должна соответствоватьвведите значения параметров DateTime контроллера.

Можете ли вы попробовать?

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