我沒有使用jquery.ui的日期選擇器一個,因爲我需要來選擇多個日期,所以我用Keith Wood's日期選擇在EditorTemplate我的日期字段:JQuery的日期選擇器驗證不工作的多個日期與MVC
@model Nullable<DateTime>
@{
string name = ViewData.TemplateInfo.HtmlFieldPrefix;
string id = name.Replace(".", "_");
string dt = Model.HasValue ? String.Format("{0:d}",(string)Model.Value.ToShortDateString()) : string.Empty;
}
@Html.Hidden("", dt, new { @class = "datefield", @type = "date", @id = id, style = "display:none;" })
<script type="text/javascript">
$(document).ready(function() {
$('#@id').datepick({
renderer: $.datepick.themeRollerRenderer,
multiSelect: 31,
onSelect: function (dates) {
var value = '';
for (var i = 0; i < dates.length; i++) {
value += (i == 0 ? '' : ',') + $.datepick.formatDate(dates[i]);
}
$('#@name').val(value)
var form = $(this).parents().find('form')[0];
// form.validate(); // this causes error (Object doesn't support property or method 'validate') whats up with that?
}
});
});
</script>
這裏是我的數據類的日期時間字段中,我的ViewModel繼承的定義:
[Required]
[DataType(DataType.Date)]
public Nullable<DateTime> StartDate { get; set; }
這裏是客戶端驗證剪斷,它被返回了無效的狀態:
form.validate({
rules:{
StartDate: {
required: true
,dpDate: true
}
},
messages: {
StartDate: 'Please choose at least one date'
}
});
if (form.valid()) { // never reached }
所以現在我正在最後確定這個內聯datepicker的最後一點驗證。正如你所看到的,我有一個由datepicker填充的隱藏字段,它包含有效的日期,但逗號分隔且不會轉換爲日期時間。當我選擇一個日期時它是有效的。有沒有一種通用的解決方案來驗證分隔數據是一種類型?
我基本上是循環使用多個日期的數據庫調用,但仍想驗證分隔的數據是DateTime類型。
問候,
布蘭登
還要注意,刪除現有的自定義form.validate({...})函數不會以任何方式更改結果,它似乎被覆蓋並且不起作用。 – m4chine
另一個說明,我試圖改變我的模型**公開名單> StartDate {get;組; } **產生與以前相同的結果 –
m4chine