随着@DanS我能够拟订的日期验证的解决方案为我的国家的帮助下,葡萄牙(PT-PT),这里是任何人的完整的解决方案具有验证日期的问题:
所有的
首先,你需要安装NuGet包:
http://www.nuget.org/packages/jquery-globalize/
然后在页面中包含要进行验证(或捆绑像我)的链接,核心库和您的国家的文化档案(注:首先放置核心,然后是文化档案,否则你会得到一个未定义的错误)
bundles.Add(new ScriptBundle("~/bundles/saida").Include(
"~/Scripts/Presenter/Saida/create.js",
"~/Scripts/Globalize/globalize.js",
"~/Scripts/Globalize/Cultures/globalize.culture.pt-PT.js",
"~/Scripts/Common/date.js"));
设置模型:
[Required(ErrorMessage = "Preenchimento obrigatório.")]
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd-MM-yyyy}")]
[Display(Name = "Data da DAU")]
public DateTime? DAUData { get; set; }
我没有把任何的ErrorMessage中的数据类型属性,因为它没有传递到视图,相反,你可以在视图把自定义消息:
<div class="editor-field">
@Html.EditorFor(model => model.DAUData)
@Html.ValidationMessageFor(model => model.DAUData, "Formato de data inválido.")
</div>
但是如果你使用jQuery的日期选择器功能与形式的定义,您不必担心格式:
$(function()
{
$(".datefield").datepicker({ dateFormat: 'dd-mm-yy', changeYear: true });
});
属性changeYear是为了选择年份(不是强制性的,只是一个很好的选项来保证该值始终有效),并且不要忘记在您的代码中包含jQuery和jQueryUI引用文件来正确呈现日历。
要完成客户端脚本,我有区域性的格式验证:
$.validator.methods.date = function (value, element)
{
return this.optional(element) || Globalize.parseDate(value, "dd-MM-yyyy", "pt-PT");
}
我也有一个日期格式的模板在View(其放置在共享/ EditorTemplates /文件夹和Don”别忘了用户@ Html.EditorFor剃刀方法查看:
@{
var value = "";
if (Model.HasValue)
{
value = String.Format("{0:d}", Model.Value.ToString("dd-MM-yyyy"));
}
}
@Html.TextBox("", value, new { @class = "datefield", type = "text", autocomplete = "off" })
现在,只要您将需要一个日期,使用模板,类“日期选择器”,这就是它
!
再次感谢丹斯;)
只是胡乱猜测,也许还可以利用 '$( “#ETD”)日期选择器( {DATEFORMAT: “DD-MM-YYYY”}。 );' – devqon
感谢您好,我已经尝试过,但它仍然没有工作:( – Patrick
我有类似的东西,但它只在safari和IE浏览器没有工作,铬是好的。你尝试过跨浏览器吗? – devqon