当发送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 });
});

当发送datetime时,控制器接收null

我把绑定搞砸了。我以为它会使用id而不是名称。在我的. cshhtml文件中添加了name属性后,一切都如预期的那样工作了。