2015-04-14 2 views
1

Я знаю, что это работает (source):Double ToString ("C") культура конкретных

double x = 9.7; 
x.ToString("C", CultureInfo.CreateSpecificCulture("nl-NL")); 

Но у меня есть этот код в моем коде позади:

System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB"); 
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-GB"); 

и в моей ASPX веб-формы , Я бы хотел использовать double.tostring("C"), так что там нетинформации. Потому что он установлен на текущий поток. Но местная машина nl-NL. CurrentThread установлен в en-GB в коде позади, но valutasign по-прежнему является знаком евро вместо фунта.

Я что-то упустил? Или используется перегрузка tostring с требованием cultureinfo? Другими словами, нужно ли переписывать все двойные строки для использования cultureinfo?

+0

В каком коде вы назначаете 'CurrentCulture'? Тем не менее, не совсем понятно, что вы хотите. Вы говорите, что первый фрагмент работает, а затем 1.) Почему вы не используете его? 2.) Вы хотите фунт вместо знака евро, так почему вы используете 'x.ToString (« C », CultureInfo.CreateSpecificCulture (« nl-NL »))? –

+4

Затем просто используйте 'x.ToString (« C »)', если вы _sure_ вы оцениваете текущую культуру потока как 'en-GB'? –

+0

@xanatos: Я думал, что весь lifeycle обрабатывается из той же темы, есть ли у вас ссылка? –

ответ

1

Убедитесь, что вы быстро инициализировали культуру в жизненном цикле страницы. На самом деле, есть даже метод для вас, чтобы переопределить специально для этой цели: Page.InitializeCulture.

Пример на основе печенья:

protected override void InitializeCulture() 
    { 
     var cookie = Request.Cookies[WebConfigurationManager.AppSettings["LocaleCookieName"]]; 
     if (cookie != null) 
      Culture = UICulture = cookie.Value; 
    } 

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

+0

Слишком плохо, что это невозможно на моей главной странице. Будут проверять его на один aspx –

+0

@JPHellemons Возможно, вы захотите пересмотреть свой дизайн. Большинство приложений будут использовать один или несколько подклассов 'Page', из которых будут получены произвольные страницы. Если окажется, что всем страницам, использующим определенную главную страницу, нужен тот же самый супертип 'Page', то вы можете создать его только для этих страниц. Часто вы обнаружите, что отношения главной страницы не привязаны по своей сути к иерархиям типа «Page», и в этом случае дополнительная гибкость пригодится. – tne