Исключение для ActionResult при получении объекта DateTime - PullRequest
0 голосов
/ 18 апреля 2019

Я делаю проект в asp.net mvc, который подключится к API Календаря Google. В представлении у меня есть форма с несколькими входами, которая создаст объект Event. Однако при нажатии кнопки отправки появляется это исключение:

The parameters dictionary contains a null entry for parameter 'eve_start_date' of 
non-nullable type 'System.DateTime' from method 'System.Web.Mvc.ActionResult Page(...)'

но я заполняю ввод eve_start_date и не знаю, почему появляется исключение

Это моя форма:

<form method="post">
    Titulo:<input type="text" id="eve_title" />
    <br />
    Descripción:<input type="text" id="eve_desc" />
    <br />
    Fecha Inicio:<input type="datetime-local" id="eve_start_date" />
    <br />
    Fecha Fin:<input type="datetime-local" id="eve_end_date" />
    <br />
...
   <input type="submit" title="Submit" />
</form>

и этот метод сообщения

[HttpPost]
public ActionResult Page(String eve_title, String eve_desc, DateTime eve_start_date, DateTime eve_end_date, ...)
    {
    Event newEvent = new Event();
    newEvent.Summary = eve_title;
    newEvent.Description = eve_desc;
    // Converting datetime to eventdatetime
    newEvent.Start = Calendar_Methods.ToEventDateTime(eve_start_date);
    newEvent.End = Calendar_Methods.ToEventDateTime(eve_end_date);
    ...
    return View();
}

но метод даже не запускается из-за Исключения, и я не уверен, что я мог сделать, чтобы это исправить. Я пытался добавить? после параметра paramers введите DateTime? eve_start_date, но появляется сообщение о том, что я не могу преобразовать System.DateTime? в System.DateTime, поэтому я отменил это, но есть DateTime, который иногда будет нулевым, так как я могу указать, что это поле обнуляемым

1 Ответ

1 голос
/ 18 апреля 2019

Вам нужно использовать name вместо id для вашей формы, добавьте имя для всего входного тега в форме, подобной этой <input type="datetime-local" name="eve_start_date" />

<form method="post">
    Titulo:<input type="text" id="eve_title" />
    <br />
    Descripción:<input type="text" name="eve_desc" />
    <br />
    Fecha Inicio:<input type="datetime-local" name="eve_start_date" />
    <br />
    Fecha Fin:<input type="datetime-local" name="eve_end_date" />
    <br />
...
   <input type="submit" title="Submit" />
</form>

Обновление: вы изменяете параметр с DateTime eve_start_date на DateTime? eve_start_date и проверяете ноль

if (eve_start_date != null) {
     newEvent.Start = Calendar_Methods.ToEventDateTime(eve_start_date.Value);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...