当发送datetime时,控制器接收null
本文关键字:控制器 null datetime | 更新日期: 2023-09-27 17:55:06
情况:我有一个应用程序,我只想做一些crud操作。例如,我有一个软件类,它保存Id,名称和生命结束日期。
当我想更新软件产品时,生命终止属性不会得到更新。它总是空的。我读到我应该尝试一个定制模型的日期,但我不能使它工作。我使用jQuery UI datepicker,我不确定我做错了什么。我尝试了不同的格式(dd.MM)。年月日,日/月/年,…),但它们都不起作用。我也试着把它添加到我的网页中。配置文件(没有成功):
<system.web>
<globalization
fileEncoding="utf-8"
requestEncoding="utf-8"
responseEncoding="utf-8"
culture="de-DE"
uiCulture="de-DE"
/>
</system.web>
下面是我的代码:
Sofware.cs:
public class Software {
[Key]
public int Id { get; set; }
[StringLength(200)]
[Required]
public string Name { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "dd.MM.yyyy", ApplyFormatInEditMode = true)]
public DateTime? EndOfLife { get; set; }
}
SoftwareController.cs:
// ...
[HttpPost]
public IActionResult Edit(Software software)
{
if (ModelState.IsValid)
{
//....
}
}
// ...
Edit.cshtml
// ...
<tr>
<td>
<label for="EndOfLife">End of Life</label>
</td>
<td>
<input type="datetime" id="EndOfLife" value="@software.EndOfLife" class="form-control datepicker">
</td>
</tr>
// ...
site.js
$(function() {
$(".datepicker").datepicker({ dateFormat: "dd/mm/yy", showWeek: true, firstDay: 1 });
});
我把绑定搞砸了。我以为它会使用id而不是名称。在我的. cshhtml文件中添加了name属性后,一切都如预期的那样工作了。