Приложение находится в ASP.NET MVC 4, в котором в View есть TextBox, присоединенный к jQuery DatePicker, для выбора только комбо Месяц и Год.
Объявлен как:
@Html.TextBox("myDate", Model.myDate.HasValue ? Model.myDate.Value.ToString("MM/dd/yyyy") : string.Empty, new { @readonly = "readonly", maxlength = "12", style = "width: 75px;height:20px", id = "myDate" })
И значение выбирается как:
$(function () {
$("#myDate").datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'MM yy',
minDate: 0,
onClose: function () {
var iMonth = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
var iYear = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
$(this).datepicker('setDate', new Date(iYear, iMonth, 1));
},
beforeShow: function () {
if ((selDate = $(this).val()).length > 0) {
iYear = selDate.substring(selDate.length - 4, selDate.length);
iMonth = jQuery.inArray(selDate.substring(0, selDate.length - 5),
$(this).datepicker('option', 'monthNames'));
$(this).datepicker('option', 'defaultDate', new Date(iYear, iMonth, 1));
$(this).datepicker('setDate', new Date(iYear, iMonth, 1));
}
}
});
});
Значение в текстовом поле отправляется методу контроллера через ajax-вызов:
data: $("#myForm").serializeArray();
Здесь, когда форма массива проверяется перед отправкой, текст содержит значение «сентябрь 2019», «июль 2019» и т. Д.
В модели поле, т. Е. MyDate, определяется как тип данных DateTime? без других атрибутов.
Проблема заключается в том, что, когда я выбираю сентябрь 2019 года, базовая модель на стороне выделенного кода получает нулевое значение.
Первоначально я думал, что это может быть из-за того, что сентябрь имеет 4 символа, но июнь 2019, июль 2019 работает нормально.
Я не уверен, почему только значения myDate, содержащие Sept, являются нулевыми, пока оно работает в течение других месяцев.