Я разместил десятичное значение формы в InvariantCulture (16.4) и был удивлен, что он не попал в модель в моей немецкой системе.
Мне пришлось использовать немецкий формат (16,4). Есть ли способ настроить язык, который используется для анализа параметров?
EDIT:
После отладки в исходном коде найдены специфичные для языка части в ValueProviderDictionary
PopulateDictionary. Документация там гласит:
- Представление формы запроса (должно быть с учетом культурных особенностей)
- Значения из RouteData (могут быть из введенного URL или из значений по умолчанию для маршрута)
- Строка запроса URI
1. принимает CurrentCulture
2./3. взять инварианткультуру
Это не работает для меня: я не ожидал бы другого поведения в отношении использования Культуры, если бы я опубликовал значение или поместил его в строку запроса.
Это может быть необходимо, если пользователь заполняет анализируемые значения вручную, но странно, если вы заполняете значения для списка. Я думаю, что идеальным решением было бы, если бы я мог переключаться между обеими версиями.
В любом случае мне нужно было найти способ установить CultureInfo.CurrentCulture перед вызовом PopulateDictionary. Вот как я это сделал:
void Application_BeginRequest(object sender, EventArgs e)
{
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
}