【发布时间】:2015-08-11 14:36:58
【问题描述】:
我正在尝试让 Bootstrap Datepicker 工作。我按照以下来源的说明进行操作:
How to add Date Picker Bootstrap 3 on MVC 5 project using the Razor engine? (答案是Enzero)
&
http://bootstrap-datepicker.readthedocs.org/en/latest/options.html#format
问题是,我想使用德国格式 (dd.mm.yyyy),而不是常见的美国 mm/dd/yyyy 格式。所以我做了以下事情:
在模型中:
[Required]
[DataType(DataType.Date)]
[Display(Name = "Datum")]
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
public DateTime? Day { get; set; }
在 Web.Config 中:
<system.web>
<globalization culture="de-DE" uiCulture="de-DE" />
...
</system.web>
在 Scripts\DatePickerReady.js 中:
if (!Modernizr.inputtypes.date) {
$(function () {
var date = new Date();
date.setDate(date.getDate());
$(".datecontrol").datepicker({
startDate: date,
format: 'dd.mm.yyyy'
});
});
}
这基本上就是我想要的。现在的问题是验证表明日期格式是错误的。 “字段基准必须是日期”
所以问题是,为什么验证不接受日期?
编辑#1:
我还使用 EditorTemplate 作为日期:(Views/Shared/EditorTemplates/date.cshtml):
@model Nullable<DateTime>
@{
DateTime dt = DateTime.Now;
if (Model != null)
{
dt = (System.DateTime) Model;
}
@Html.TextBox("", String.Format("{0:d}", dt.ToShortDateString()), new { @class = "form-control datecontrol", type = "date" })
}
编辑#2: 我刚刚读到,当您使用 TextBox(而不是例如 EditorFor)时,无法识别 DisplayFormat。这就解释了为什么验证不起作用。但是我还是不知道怎么解决。
编辑#3:
这是我在 IE F12 中看到的日期字段的 HTML 代码:
<input name="Day" class="form-control datecontrol input-validation-error" id="Day" aria-invalid="true" aria-required="true" aria-describedby="Day-error" type="date" value="11.08.2015" data-val-required="The Datum field is required." data-val="true" data-val-date="The field Datum must be a date.">
页面上加载的脚本有: jquery-2.1.4.js、bootstrap.js、bootstrap-datepicker.js、DatePickerReady.js、respond.js、jquery.validate.js、jquery.validate.unobtrusive.js
编辑#4: 我现在在 DatePickerReady.js 中使用它:
if (!Modernizr.inputtypes.date) {
$(function () {
var date = new Date();
date.setDate(date.getDate());
$(".datecontrol").datepicker({
startDate: date,
format: 'dd.mm.yyyy',
autoclose: true,
todayHighlight: true,
weekStart: 1,
language: 'de-DE',
calendarWeeks: true
});
});
}
每个属性都有效,但“de-DE”似乎没有做任何事情。当时的语言仍然是英语。验证问题也仍然存在。
更多信息: ASP.NET MVC 5、.NET 4.6、Bootstrap.Datepicker 1.4.0、jQuery 2.1.4、jQuery.Validation 1.14.0、Microsoft.jQuery.Unobtrusive.Validation 3.2.3
【问题讨论】:
-
您确定这与您的任何 javascript 中的验证无关吗?看看这个:link
-
请在 f12 工具中使用网络选项卡检查这是客户端错误还是服务器错误
-
@branmar 我检查了链接并尝试实现它。虽然我加载了所有提到的脚本,但我得到了错误。我无法让它工作。
-
@MalcolmFrexner 当我使用日期选择器时,F12 中的网络选项卡没有说明任何错误。
标签: c# asp.net-mvc twitter-bootstrap