情况:我有一个应用程序,我只想做一些CRUD操作。例如,我有一个软件类,其中包含Id,Name和End of Life(EOL)日期。
当我想更新软件产品时,End of Life Property不会更新。它始终为空。我读过我应该为日期尝试一个自定义模型活页夹,但我无法使它工作。我使用jQuery UI datepicker,我不确定我做错了什么。我尝试了不同的格式(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 });
});
答案 0 :(得分:0)
您获得null的原因是您使用HTML5输入类型 应该显示自己的日期选择器的日期或日期时间。但是,当您使用jquery日期选择器选择日期时,此值不会与其余数据一起回发。我还没有意识到问题的根源,但肯定存在。
你可以使用这样的HtmlHelper:
@Html.TextBox("ReleaseDate", String.Format("{0:d}", DateTime.Now), new { @type = "date", @class = "datepicker" })
希望这会有所帮助......
答案 1 :(得分:0)
我搞砸了绑定。我以为它会使用id而不是名称。在我的.cshtml文件中添加name-attribute后,一切都按预期工作。