У меня есть приложение asp.net MVC с культурой «es-MX». Вот что у меня есть в моем файле web.config:Kendo DatePicker Ошибка связывания с глобализацией
<globalization enableClientBasedCulture="true" uiCulture="es-MX" culture="es-MX"></globalization>
И вот что у меня есть в моей странице _layout:
<script type="text/javascript">
$(function() {
//set current to the "es-MX" culture script
kendo.culture("es-MX");
})
</script>
У меня есть кендо DatePicker так:
@(Html.Kendo().DatePickerFor(model => model.StartDate)
.HtmlAttributes(new { @class = "input-field" })
)
Когда я отправляю форму на свой контроллер, поле StartDate
равно null.
Вот ответ, который я получаю от сервера:
"Ошибки": { "StartDate": { "ошибки": [ "Значение \ u002707/10/2016 12:00:00 утра \ u0027 не является действительным для Fecha де Inicio. "]}}
к слову, Accept-Language запроса, который отправляется на сервер„EN-US“, который я нахожу странным.
UPDATE:
Я пытался использовать пользовательские модели связующие для DateTime, например:
public class DateTimeModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (string.IsNullOrWhiteSpace(value.AttemptedValue))
return null;
DateTime dateTime;
var isDate = DateTime.TryParse(value.AttemptedValue, Thread.CurrentThread.CurrentUICulture,
DateTimeStyles.None, out dateTime);
if (!isDate)
{
bindingContext.ModelState.AddModelError(bindingContext.ModelName, "La fecha es válido.");
return DateTime.UtcNow;
}
return dateTime;
}
}
Но, похоже, проблема с временной частью даты, переданной контроллер. Значение 07/10/2016 12:00:00 a. m.
не признается ни в одной из дней ни в культуре «es-MX», ни в «en-US».
Я не думаю, что проблема связана с культурой, потому что 07/10/2016 должна быть датой подтверждения как в es-MX (7 октября), так и в США (10 июля) –
@ AndrésNava-.NET, Я знаю, но у меня нет проблем, когда я удаляю es-MX-культуру из файла web.config и страницы _Layout. Однако, если я просто изменил культуру DatePicker на en-US, он все равно не будет связываться. – ataravati
@ AndrésNava-.NET, см. Мое обновление. – ataravati