我制作了一个简单的mvc应用来测试全球化/本地化。 我已经创建了Resources.resx文件和Resources.es.resx(西班牙语)文件,其中包含我想要翻译的字符串。
所有字符串都可以正常翻译,但使用DateTime格式 我遇到了困难。
在我使用的局部视图中,我使用xd-soft datetimepicker作为我的日期字段,如下所示:
razor语法:
<div class="form-group">
@Html.LabelFor(model => model.Date, htmlAttributes: new { @class = "control-label col-md-3" })
<div class="col-md-10">
@Html.EditorFor(model => model.Date, Resources.FormatSave, new { htmlAttributes = new { @class = "form-control input-sm datetimepicker1" } })
@Html.ValidationMessageFor(model => model.Date, "", new { @class = "text-danger" })
</div>
</div>
并且datetimepicker的脚本如下所示:
<script type="text/javascript">
jQuery('.datetimepicker1').datetimepicker({
format: '@Resources.Format', //when local d.m.Y, when spanish d/m/Y
theme: 'dark',
lang: '@Resources.Language',
closeOnDateSelect: true,
});
</script>
当我使用西班牙语格式d / m / Y时,它正常,当我使用d.m.Y时,我会收到验证消息&#34;字段日期必须是日期。&#34;。
我的模型看起来像这样:
[Display(Name = "Date", ResourceType = typeof(Resources.Resources))]
[Required(ErrorMessageResourceType = typeof(Resources.Resources),
ErrorMessageResourceName = "DateRequired")]
[DataType(DataType.DateTime)]
public DateTime Date { get; set; }
答案 0 :(得分:1)
试试吧。当我的dd / MM / yyyy格式未被识别为日期格式时,我找到了这个解决方案。
首先创建一个名为jquery.validate.date.js
的新java脚本文件,其中包含以下代码
$(function () {
$.validator.methods.date = function (value, element) {
if ($.browser.webkit) {
var d = new Date();
return this.optional(element) || !/Invalid|NaN/.test(new Date(d.toLocaleDateString(value)));
}
else {
return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
}
};
});
它会覆盖jquery.validate.js
然后在jquery.validate.js
之后调用脚本
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.val.js")"/>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.val.date.js")"/>