+1, на данный момент, на мой взгляд, нет ничего лучше, чем реализация связующего устройства с учетом культурных особенностей

тоящее время у меня есть глобальный фильтр под названиемGlobalizationFilter который проверяет значения маршрута, куки и заголовок языков браузера, чтобы определить правильные настройки культуры для запроса:

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
    // determine cultureInfo
    Thread.CurrentThread.CurrentCulture = cultureInfo;
    Thread.CurrentThread.CurrentUICulture = cultureInfo;
}

Все это работает, но процесс связывания модели, по-видимому, происходит до глобальных фильтров, поэтому связыватель модели не учитывает настройки культуры.

Это приводит к проблемам с интерпретацией двойных значений,DateTime ценности и т. д.

Я мог бы переместить код обнаружения культуры в другие места, но мне не нравятся мои варианты:

ПриложенияBeginRequest мероприятие. На данный момент маршрутизация не произошла, поэтому мне придется вручную выловить/en-US/ маркер культуры из URL. Это недопустимо.

ДиспетчерскаяInitialize() метод. Это заставит меня написать базовый класс для всех моих контроллеров и унаследовать от него существующие контроллеры. Мне это не нравится, но я выберу это решение, если ничего не подойдет.

В идеале я хочу найти способ вставить свой код между событиями «завершение маршрутизации» и «запуск привязки модели», но в MSDN / Google я ничего не нашел по этому поводу.

Или, может быть, есть другой способ справиться с глобализацией MVC3, о котором я не знаю?

Заранее спасибо за любой вклад.

Ответы на вопрос(1)

Ваш ответ на вопрос