Пользовательский ModelBinder для локализации DateTime - PullRequest
0 голосов
/ 07 февраля 2012

У меня есть форма на сайте ASP.NET MVC, которую я недавно изменил с POST на GET. Однако когда я сделал это, я понял, что параметры DateTime в связанном действии теперь эффективно используют другую культуру - en-US для GET, а не en-GB для POST. Так что в основном день и месяц меняются.

В следующих статьях объясняется, почему это делается, однако мне нужно было найти способ преодолеть его, не возвращаясь к 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 голосов
/ 10 февраля 2012

Кажется, JS - единственный способ сделать это. То, что я думал, было ответом выше, просто возвращал значение, установленное конструктором Модели.

...