DateTime で動作するように DefaultModelBinder を作成しました
形式は「dd-MM-yyyy」です
この DefaultModelBinder は IE と Chrome で正常に動作します。
しかし、Firefoxでは機能しませんか??
これに関するヘルプ。
更新: {要求どおり}
public class DateTimeBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var vpr = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (vpr == null)
{
return null;
}
var date = vpr.AttemptedValue;
if (String.IsNullOrEmpty(date))
{
return null;
}
bindingContext.ModelState.SetModelValue(bindingContext.ModelName, bindingContext.ValueProvider.GetValue(bindingContext.ModelName));
try
{
var realDate = DateTime.Parse(date, System.Globalization.CultureInfo.GetCultureInfoByIetfLanguageTag("en-GB"));
bindingContext.ModelState.SetModelValue(bindingContext.ModelName, new ValueProviderResult(date, realDate.ToString("yyyy-MM-dd hh:mm:ss"), System.Globalization.CultureInfo.GetCultureInfoByIetfLanguageTag("en-GB")));
return realDate;
}
catch (Exception e)
{
bindingContext.ModelState.AddModelError(bindingContext.ModelName, e);
return null;
}
}
}
Global.asax:
ModelBinders.Binders.Add(typeof(DateTime), new DateTimeBinder());
ModelBinders.Binders.Add(typeof(DateTime?), new DateTimeBinder());
Update2: 【画像追加】
ファイアフォックス :
これは Firefox の検証の問題です。
インターネットエクスプローラ :
注 : リクエストは SERVER に送信されていません。これは MVC からのクライアント側の検証であり、FIREFOX にエラーが表示されます。