我需要在大多数MVC视图上显示JQuery UI Datepicker。所以我为日期范围创建了一个模型类:
public class DateRange
{
[DisplayName("From")]
[DataType(DataType.Date)]
public DateTime? FromDate { get; set; }
[DisplayName("To")]
[DataType(DataType.Date)]
public DateTime? ToDate { get; set; }
}
以及它的编辑器:
@model DateRange
@Html.LabelFor(model => model.FromDate)
@Html.TextBoxFor(model => model.FromDate, "{0:dd/MM/yyyy}", new { @class = "dateRangeFrom"})
@Html.LabelFor(model => model.ToDate)
@Html.TextBoxFor(model => model.ToDate, "{0:dd/MM/yyyy}", new { @class = "dateRangeTo"})
在我的编辑器连接.js文件中:
$(function ()
{
$('.dateRangeFrom').datepicker({
dateFormat: "dd/mm/yy",
onClose: function (selectedDate) {
$(".dateRangeTo").datepicker("option", "minDate", selectedDate);
}
});
$('.dateRangeTo').datepicker({
dateFormat: "dd/mm/yy",
onClose: function (selectedDate) {
$(".dateRangeFrom").datepicker("option", "maxDate", selectedDate);
}
});
})
这一切都完美运行,除非我认为我需要其中两个日期范围模型。正如您可以预测的那样,这不适用于多个日期范围。
编辑:例如,问题是当我在第一个日期范围内关闭"发件人"选择器时,它将在两个日期范围内设置"收件人"选择器的初始日期。
请帮忙吗?
一种方法可能是将两个文本框放在一个<div>
中。所以你的新编辑器模板:
@model DateRange
<div>
@Html.LabelFor(model => model.FromDate)
@Html.TextBoxFor(model => model.FromDate, "{0:dd/MM/yyyy}", new { @class = "dateRangeFrom"})
@Html.LabelFor(model => model.ToDate)
@Html.TextBoxFor(model => model.ToDate, "{0:dd/MM/yyyy}", new { @class = "dateRangeTo"})
</div>
js 应该看起来像这样:
$(function ()
{
$('.dateRangeFrom').datepicker({
dateFormat: "dd/mm/yy",
onClose: function (selectedDate) {
$(this).closest("div").find(".dateRangeTo").datepicker("option", "minDate", selectedDate);
}
});
$('.dateRangeTo').datepicker({
dateFormat: "dd/mm/yy",
onClose: function (selectedDate) {
$(this).closest("div").find(".dateRangeFrom").datepicker("option", "maxDate", selectedDate);
}
});
})
*未经测试的代码
希望对您有所帮助!