我正在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();
}
,但是由于异常,该方法甚至无法启动,而且我不确定该如何解决。我尝试添加?在paramers类型DateTime? eve_start_date
之后,但是出现一个错误,提示我无法将System.DateTime?
转换为System.DateTime
,所以我不知道这一点,但是有一个DateTime
有时为空,那么如何指示该字段为空?
答案 0 :(得分:0)
您需要在表单中使用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);
}