「es-MX」カルチャを使用したasp.net MVCアプリケーションがあります。これが私の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>
次のような剣道 DatePicker があります。
@(Html.Kendo().DatePickerFor(model => model.StartDate)
.HtmlAttributes(new { @class = "input-field" })
)
フォームをコントローラーにポストバックすると、StartDate
フィールドは null になります。
サーバーからの応答は次のとおりです。
"Errors":{"StartDate":{"errors":["値 \u002707/10/2016 12:00:00 am\u0027 は 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" カルチャでも日付として認識されません。