2012-07-27 4 views
7

अपने प्रोजेक्ट में कई स्थानों पर जहां मैं निर्मित {0:C} मुद्रा स्वरूप के साथ मुद्रा प्रदर्शित करने के लिए कोशिश कर रहे हैं। यदि संख्या ऋणात्मक है, तो यह मान कोष्ठक में मानती है। मैं इसके बजाय नकारात्मक संकेत का उपयोग करना चाहता हूं।मैं कोष्ठकों के बजाय एक नकारात्मक चिह्न का उपयोग करने के मानक मुद्रा प्रारूप मिल सकता है?

मेरा web.config संस्कृति auto पर सेट है, और यह en-US पर हल हो जाती है।

आदर्श समाधान कुछ वैश्विक वेब.कॉन्फिग या अन्य सेटिंग होगी जो संस्कृति के लिए नकारात्मक संकेत प्रदर्शित करेगी, लेकिन मैं अन्य, कम भयानक समाधानों के लिए भी खुला हूं।

+0

की [वैश्विक स्तर का स्वरूप बदल रहा है संभव डुप्लिकेट सी # में नकारात्मक मुद्रा संख्याएं (http://stackoverflow.com/questions/3994601/globally-changing-format-of-negative-currency-numbers-in-c-sharp) – jmort253

उत्तर

10

मैं जवाब का एक संयोजन यहाँ लगता है आप जो चाहते हैं उसके करीब आ जाएंगे।

protected void Application_BeginRequest() 
{ 
    var ci = CultureInfo.GetCultureInfo("en-US"); 

    if (Thread.CurrentThread.CurrentCulture.DisplayName == ci.DisplayName) 
    { 
     ci = CultureInfo.CreateSpecificCulture("en-US"); 
     ci.NumberFormat.CurrencyNegativePattern = 1; 
     Thread.CurrentThread.CurrentCulture = ci; 
     Thread.CurrentThread.CurrentUICulture = ci; 
    } 
} 

आप किसी भी कोड है कि इस तरह एक ही संस्कृति के साथ संबंधित नहीं करना चाहते हैं ... मेरा मानना ​​है कि आप अपने खुद के संस्कृति का निर्माण करने की आवश्यकता है ... Check this Question

1

मैं अपने प्रश्न समझ में जहां तक।

आप एक संस्कृति के आधार पर मुद्रा प्रारूप दिखाना चाहते हैं।

हर बार जब आप संस्कृति विशिष्ट चीजें करते हैं, .NET Thread.CurrentThread.CurrentCulture और Thread.CurrentThread.CurrentUICulture पर दिखता है।

आप वैश्विक.एएसएक्स BeginRequest विधि में एएसपी.NET में जो संस्कृति चाहते हैं उसे सेट कर सकते हैं।

protected void Application_BeginRequest() 
{ 
    var ci = CultureInfo.GetCultureInfo("en-US"); // put the culture you want in here 

    Thread.CurrentThread.CurrentCulture = ci; 
    Thread.CurrentThread.CurrentUICulture = ci; 
} 
8

आप जो शायद है सही NumberFormatInfo.CurrencyNegativePattern निर्दिष्ट करना 1.

Decimal dec = new Decimal(-1234.4321); 
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US"); 
culture.NumberFormat.CurrencyNegativePattern = 1; 
String str = String.Format(culture, "{0:C}", dec); 
Console.Write(str); 

डेमो: http://ideone.com/HxSqT

उत्पादन:

-$1,234.43 
+0

मुझे लगता है कि मुद्रा नकारात्मक पैटर्न 1 होना चाहिए। अमेरिका में मुद्रा प्रतीक बाईं तरफ सही तरफ नहीं होना चाहिए। – Sam

+0

@ सैम: तदनुसार मेरा जवाब संपादित किया। हाँ के पाठ्यक्रम: –

+0

यह निश्चित रूप से 5 1. करने के लिए :) – Sam

संबंधित मुद्दे