控制器在发布日期时间时收到空值
Controller receives null when posting datetime
情况:我有一个应用程序,我只想在其中执行一些 CRUD 操作。例如,我有一个软件 class,它包含 ID、名称和生命周期结束 (EOL) 日期。
当我想更新软件产品时,生命周期结束 属性 不会更新。它始终为空。我读到我应该为日期尝试一个自定义模型活页夹,但我无法让它工作。我使用 jQuery UI 日期选择器,但我不确定自己做错了什么。我尝试了不同的格式(dd.MM.yyyy、dd/MM/yyyy、...),但均无效。我还尝试将此添加到我的 web.config 文件中(但没有成功):
<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 而不是名称。在我的 .cshtml 文件中添加名称属性后,一切都按预期工作。
情况:我有一个应用程序,我只想在其中执行一些 CRUD 操作。例如,我有一个软件 class,它包含 ID、名称和生命周期结束 (EOL) 日期。
当我想更新软件产品时,生命周期结束 属性 不会更新。它始终为空。我读到我应该为日期尝试一个自定义模型活页夹,但我无法让它工作。我使用 jQuery UI 日期选择器,但我不确定自己做错了什么。我尝试了不同的格式(dd.MM.yyyy、dd/MM/yyyy、...),但均无效。我还尝试将此添加到我的 web.config 文件中(但没有成功):
<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 而不是名称。在我的 .cshtml 文件中添加名称属性后,一切都按预期工作。