Как визуализировать только некоторые определенные поля модели с помощью InvariantCulture, в то время как остальные продолжают использовать культуру пользователя?

У меня есть пара скрытых входных данных в представлении asp.net mvc. Их значения содержат объекты типа ] double . Я хочу, чтобы они отображались с помощью InvariantCulture , поскольку они используются для передачи в api (карты Google) на клиенте. В настоящее время они отображаются с запятой. (,) как десятичный разделитель, в то время как api ожидает точку (.) в качестве десятичного разделителя.

Лучшим решением было бы, если бы я мог указать язык и региональные параметры в атрибуте аннотации данных DisplayFormat в свойстве модели, но я этого не делаю. Думаю, что это возможно:

public class Position
{
    [DisplayFormat(DataFormatString="{0:G}, CultureInfo.InvariantCulture")]
    public double Latitude;
    ...
}

Я также не могу просто установить CurrentCulture на InvariantCulture в моем методе Application_Start , так как в методе screen, который должен соответствовать правильной культуре пользователя.

Итак, есть ли способ просто временно изменить текущую культуру, прямо перед тем, как я сделаю Html.HiddenFor (Model => Model.Latitude) для этого конкретного свойства, а потом сбросить его?

Или есть другой лучший способ сделать это? Что считается наилучшей практикой в ​​этом отношении?

6
задан Darin Dimitrov 14 March 2011 в 20:01
поделиться