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>
接下来,当我想对记录进行更改时,它不显示日历。我可以为此更改/添加什么?
而且它也有格式验证。当我添加日期时是dd/mm/yyyy,当我进行更改时,它只验证yyyy/mm/dd。我该如何改变它?
这是相当混乱和罕见的情况,我希望你能帮助我。
答
我面临同样的问题,我解决它把验证脚本用于验证浏览器(谷歌的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")]
尝试'@ Html.EditorFor(model => model.DueDate.ToString(“dd/MM/yyyy”),new {htmlAttributes = new {@class =“form-control”}})''。问题是当你返回保存的日期。如果没有保存,它就像一个魅力。只需在显示日期时设置日期的格式即可。 –
我建议您使用引导日期选择器而不是浏览器特定的选择器。因为当你在Internet Explorer中打开你的网站时,你将无法看到这个日期选择器。 这里是引导日期选择器的链接。 https://bootstrap-datepicker.readthedocs.io/en/latest/ – Saadi
你也可以在引导日期选择器的过程中指定你的日期格式。 – Saadi