用于DateTime本地化的自定义ModelBinder

时间:2012-02-07 17:26:50

标签: asp.net-mvc custom-model-binder

我在ASP.NET MVC网站上有一个表单,我最近从POST更改为GET。但是,当我完成这项工作时,我已经意识到相关操作中的DateTime参数现在正在有效地使用不同的文化 - 用于GET的en-US,而不是用于POST的en-GB。因此,基本上日期和月份都会被切换。

以下文章向我解释了为什么要这样做但是我需要找到一种方法来克服它而不需要在提交之前恢复POST或使用JS来修改表单。

http://xhalent.wordpress.com/2011/05/14/localization-of-dates-in-asp-net-mvc/ http://weblogs.asp.net/melvynharbour/archive/2008/11/21/mvc-modelbinder-and-localization.aspx

我为DateTime创建了一个自定义绑定器,只是为了试验一个理论,但这样做似乎解决了这个问题。任何人都可以解释为什么这有效吗?

自定义活页夹基本上是global.ascx.cs

中的以下行
ModelBinders.Binders.Add(typeof(DateTime), new DateTimeModelBinder());

和DateTimeModelBinder类的这个

public class DateTimeModelBinder : IModelBinder
{
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        return bindingContext.Model;
    }
}

1 个答案:

答案 0 :(得分:0)

似乎JS是唯一的方法。我认为上面的答案只是返回Model的构造函数设置的值。