我在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,那么我怎么能指出该字段可以为空呢?
您需要使用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);
}