DatePicker在mvc中使用数据注释

问题描述:

我在我的模型中使用数据注释作为日期选择器。DatePicker在mvc中使用数据注释

型号:

[DataType(DataType.Date)] 
    public DateTime DueDate { get; set; } 

查看:

<div class="form-group"> 
     @Html.LabelFor(model => model.DueDate, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.DueDate, new { htmlAttributes = new { @class = "form-control" } }) 
      @Html.ValidationMessageFor(model => model.DueDate, "", new { @class = "text-danger" }) 
     </div> 
    </div> 

当我加入日期数据库第一次它显示我的日历(无时间)。 enter image description here

接下来,当我想对记录进行更改时,它不显示日历。我可以为此更改/添加什么?

而且它也有格式验证。当我添加日期时是dd/mm/yyyy,当我进行更改时,它只验证yyyy/mm/dd。我该如何改变它?

这是相当混乱和罕见的情况,我希望你能帮助我。

+0

尝试'@ Html.EditorFor(model => model.DueDate.ToString(“dd/MM/yyyy”),new {htmlAttributes = new {@class =“form-control”}})''。问题是当你返回保存的日期。如果没有保存,它就像一个魅力。只需在显示日期时设置日期的格式即可。 –

+0

我建议您使用引导日期选择器而不是浏览器特定的选择器。因为当你在Internet Explorer中打开你的网站时,你将无法看到这个日期选择器。 这里是引导日期选择器的链接。 https://bootstrap-datepicker.readthedocs.io/en/latest/ – Saadi

+0

你也可以在引导日期选择器的过程中指定你的日期格式。 – Saadi

我面临同样的问题,我解决它把验证脚本用于验证浏览器(谷歌的Chrome工作正常,没有需求的)

var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor); 

    if (!isChrome) { 
     $(document).ready(function() { 
      $("#IdOfDivThatYouNedd").datepicker(); 
     }); 
    } 

为了验证您可以使用此dataanotation:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")] [DataType(DataType.Date, ErrorMessage = "date is not a corret format")]