dd/mm/yyyy日期验证MVC
我做了一个MVC应用程序,用户选择一个开始日期和结束日期。他们使用jQuery datepicker输入这些数据。但是,当我点击保存时,我收到验证消息,说它不是验证日期。 textbox
接受日期格式为yyyy/mm/dd。不知道为什么我收到这些验证消息,因为我已经尝试了很多东西。dd/mm/yyyy日期验证MVC
我的代码如下
Create.cshtml查看
<div class="form-group">
<script src="@Url.Content("~/Scripts/jquery-ui.min.js")" type="text/javascript"></script>
<link href="@Url.Content("/Content/jquery-ui.min.css")" rel="stylesheet" type="text/css" />
@Html.LabelFor(model => model.StartDate, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<input type="text" id="MyDate"
@Html.EditorFor(model => model.StartDate, "{0:dd/MM/yyyy}", new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.StartDate, "", new { @class = "text-danger" }) />
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.FinishDate, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<input type="text" id="FinishDate"
@Html.EditorFor(model => model.FinishDate, "{0:dd/MM/yyyy}", new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.FinishDate, "", new { @class = "text-danger" }) />
</div>
</div>
<p>
<button class="btn btn-success"><span class="glyphicon glyphicon-plus"></span>Create</button>
</p>
</div>
}
<script type="text/javascript">
$(document).ready(function() {
$("#MyDate").datepicker();
$.validator.methods.date = function (value, element) {
Globalize.culture("en-AU");
// you can alternatively pass the culture to parseDate instead of
// setting the culture above, like so:
// parseDate(value, null, "en-AU")
return this.optional(element) || Globalize.parseDate(value) !== null;
}
});
</script>
<script type="text/javascript">
$(document).ready(function() {
$("#FinishDate").datepicker();
});
</script>
<div>
<a class=" btn btn-primary" href="@Url.Action("Index")"><span class=" glyphicon glyphicon-home"></span> Task List</a>
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
我也尝试添加该到webconfig
<globalization culture="en-AU" uiCulture="en-AU" />
假设你有这些模特属性:
public DateTime? StartDate { get; set; }
public DateTime? FinishDate { get; set; }
你的背景下,您应该已经在你的脚本目录globalize.js
和 globalize.culture.en-AU.js
,因此你需要在编辑模式下应用预设日期格式是这样的:
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
[DataType(DataType.Date)]
public DateTime? StartDate { get; set; }
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
[DataType(DataType.Date)]
public DateTime? FinishDate { get; set; }
通过覆盖jQuery的基本验证全球化的插件, EditorFor
将使用属性属性中给定的预设日期格式。
全球化代码应类似于此示例:
<script type="text/javascript">
$(document).ready(function() {
$("#MyDate").datepicker();
$("#FinishDate").datepicker();
$.validator.methods.date = function (value, element) {
Globalize.culture("en-AU");
// you can alternatively pass the culture to parseDate instead of
// setting the culture above, like so:
// parseDate(value, null, "en-AU")
return this.optional(element) || Globalize.parseDate(value) !== null;
}
});
</script>
进一步参考类似的问题:MVC 4 date culture issue?
对不起,我期待接受一个MM/dd/yyyy格式,因为这是datePicker输入日期的方式。是的,我已经添加了2个脚本并添加了这个'[DisplayFormat(DataFormatString =“{0:MM/dd/yyyy }“,ApplyFormatInEditMode = true)] [DataType(DataType.Date)] public DateTime? StartDate {get;组; } [DisplayFormat(DataFormatString =“{0:MM/dd/yyyy}”,ApplyFormatInEditMode = true)] [DataType(DataType.Date)] public DateTime? FinishDate {get;组; }'到我的模型文件夹,并包含JavaScript代码,但它仍然说“价值'09/14/2016'对于StartDate无效。” –
我应该添加什么全球化脚本来接受这种格式? –
请添加您的视图模型的代码 - 我想你可以利用你的DisplayFormat属性的还没有准备好。 –
美国格式不是yyyy/mm/dd,而是mm/dd/yyyy。 –
@ErikFunkenbusch感谢您的意见,我一定会改变我的问题,但是您是否真的了解如何解决我的问题? –