У меня есть приложение asp.net MVC с культурой "es-MX". Вот что у меня есть в моем файле web.config:
<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>
У меня есть Kendo DatePicker, как это:
@(Html.Kendo().DatePickerFor(model => model.StartDate)
.HtmlAttributes(new { @class = "input-field" })
)
Когда я отправляю форму обратно в свой контроллер, поле StartDate
имеет значение null.
Вот ответ, который я получаю от сервера:
"Errors":{"StartDate":{"errors":["Значение '07/10/2016 00:00:00' недопустимо для Fecha de Inicio."]}}
Кстати, Accept-Language запроса, отправляемого на сервер, — «en-US», что мне кажется странным.
ОБНОВЛЕНИЕ:
Я попытался использовать привязку пользовательской модели для 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".