У меня возникла проблема с попыткой проверки jquery на некоторое время для принятия даты в формате uk, в основном, когда я добавляю @ Scripts.Render ("~ / bundles / jqueryval") в свой раздел, проверка не распознает мое поле даты имеет допустимое значение.
Я следовал этому руководству (http://www.ablogaboutcoding.com/2017/08/12/mvc-uk-date-issues/), чтобы попытаться решить проблему, но столкнулся с проблемой, с которой, я надеюсь, кто-то может помочь. Эта проблема возникает, когда ModelBinder пытается преобразовать значение uk в значение DateTime. Код ниже:
Я попытался преобразовать значение в DateTime (см. Var date2), и это будет работать с датами Великобритании, но я не могу затем применить правильную культуру.
Модель Binder:
public class NullableDateTimeModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (value == null || string.IsNullOrWhiteSpace(value.AttemptedValue))
return null;
bindingContext.ModelState.SetModelValue(bindingContext.ModelName, value);
try
{
var date2 = Convert.ToDateTime(value.AttemptedValue);
var date = value.ConvertTo(typeof(DateTime), Thread.CurrentThread.CurrentUICulture);
return date;
}
catch (Exception ex)
{
bindingContext.ModelState.AddModelError(bindingContext.ModelName, ex);
return null;
}
}
}
Сбой при изменении даты.
Внутреннее исключение = "Строка не была распознана как действительный DateTime".
Сообщение = "20/05/2019 не является допустимым значением для DateTime".
Если я введу дату «10/05/2019», я не получу исключения, поскольку она может быть преобразована в американскую дату.
Модель:
[Required(ErrorMessage = "Enter the planned start date of the project")]
[DataType(DataType.Date)]
[Column(TypeName = "DATE")]
public DateTime? PlannedStartDate { get; set; }
Вид:
<div class="form-inline">
<div class='input-group date mydatepicker'>
@Html.TextBoxFor(m => m.FormData.PlannedStartDate, new { title = "Planned Start Date", @class = "form-control", placeholder = "dd/mm/yyyy" })
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
</div>
Сценарии
$(document).on('click', '#ajaxCreate2', function () {
var $form = $('#form0')
.validate({
rules: {
FormData_PlannedStartDate: {
dateITA: true
}
}
});
if ($form.valid()) {
$.ajax({
async: false,
type: 'POST',
url: 'ajaxCreate',
datatype: "json",
data:
JSON.stringify($('#form0').serialize()),
success: function (data) {
}
});
} else {
var validator = $('#form0').validate();
$.each(validator.errorMap, function (index, value) {
$(function () {
var a = value;
if (a != '')
toastr.error("", a);
})
});
}
});