检索DateTime对象时ActionResult的异常

问题描述 投票:0回答:1

我在asp.net mvc做一个项目,它将连接到Google Calendar API。在视图中,我有一个带有几个输入的表单,它将创建一个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>

这就是Post方法

[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();
}

但是由于异常,该方法甚至没有启动,我不知道我该怎么做才能修复它。我试过添加?在参数类型DateTime? eve_start_date之后但是出现了一个错误,表示我无法将System.DateTime?转换为System.DateTime,所以我解除了它,但是有一个DateTime有时会为null,那么我怎么能指出该字段可以为空呢?

asp.net-mvc datetime google-calendar-api
1个回答
1
投票

您需要使用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并检查null

if (eve_start_date != null) {
     newEvent.Start = Calendar_Methods.ToEventDateTime(eve_start_date.Value);
}
© www.soinside.com 2019 - 2024. All rights reserved.