0

我创建了一个 DefaultModelBinder 来使用 DateTime

格式为“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;
        }

    }
}

全球.asax:

        ModelBinders.Binders.Add(typeof(DateTime), new DateTimeBinder());
        ModelBinders.Binders.Add(typeof(DateTime?), new DateTimeBinder());

更新 2:[图片添加]

火狐: 火狐图片

这是 Firefox 中的验证问题。

IE浏览器 : Internet Explorer 图像

注意:请求没有被发送到服务器,这是来自 MVC 的客户端验证,它在 FIREFOX 中显示错误。

4

1 回答 1

0

我得到了这个问题的答案,嗯,它只是浏览器使用不同的文化,我的 firefox 使用文化作为“英语(en)”,但我无法完全解决这个问题,因为我不知道如何禁用这个错误。

我正在考虑为日期使用隐藏字段,然后使用文本框,以便用户可以使用 Jquery UI 输入日期,并且在提交期间我可以处理日期并将其更改为 yyyy-MM-dd。

谢谢你们的帮助。

于 2013-04-14T06:43:11.200 回答