0

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 画像

これは Firefox の検証の問題です。

インターネットエクスプローラ : Internet Explorer の画像

注 : リクエストは SERVER に送信されていません。これは MVC からのクライアント側の検証であり、FIREFOX にエラーが表示されます。

4

1 に答える 1

0

私はこの質問に対する答えを得ました。うーん、ブラウザだけが異なる文化を使用しています私のFirefoxは文化を「英語(en)」として使用していますが、このエラーを無効にする方法がわからないため、問題を完全に並べ替えることができません。

ユーザーがJquery UIを使用して日付を入力し、送信中に日付を処理してyyyy-MM-ddに変更できるように、日付に隠しフィールドを使用してからテキストボックスを使用することを考えていました。

助けてくれてありがとう。

于 2013-04-14T06:43:11.200 に答える