मेरे पास एक .NET ऐप है जो उपयोगकर्ता को अपनी भाषा & संस्कृति (दिनांक/संख्या स्वरूपण) चुनने की अनुमति देता है। उनकी संस्कृति सेटिंग Thread.CurrentThread.CurrentCulture
(Thread.CurrentThread.CurrentUICulture
में भी संग्रहीत है, लेकिन यह एक अलग मुद्दा है)।जावास्क्रिप्ट में .NET/Razor से स्थानीयकृत संख्याओं को पार्स करने का सबसे अच्छा तरीका क्या है?
जब मैं रेजर के माध्यम से एक वर प्रिंट आउट, वह स्थानीय प्रारूप में पता चलता है:
<span>@bignum</span> (renders as "123.456" or "123,456")
हालांकि, मैं भी कुछ नेट उत्तीर्ण करने की आवश्यकता जावास्क्रिप्ट को वार्स:
var js_bignum = @bignum;
समस्या है कि इस मामले में जावास्क्रिप्ट इन संख्याओं के स्थानीय संस्करणों को समझ में नहीं आता है, इसलिए यह उपरोक्त कथन बनने में विफल रहता है:
var js_bignum = 123,456;
ऐसा इसलिए हो सकता है क्योंकि उपयोगकर्ता की ब्राउज़र की संस्कृति सेटिंग उपयोगकर्ता की वेबपैप की संस्कृति सेटिंग से अलग है। किसी भी दर पर, यह एक ऐसी स्थिति है जिसे हमें संभालने में सक्षम होना चाहिए।
तो इसे संभालने का सबसे आसान तरीका क्या है? मैं अपना स्वयं का जावास्क्रिप्ट ConvertToStandardNumberFormat()
बना सकता हूं जो .NET से एक स्ट्रिंग मान लेता है और एक "मानक" संख्या प्रारूप देता है, लेकिन यह एक हैक की तरह लगता है। गैर-लोकलाइज्ड प्रारूप संख्या प्रस्तुत करने के लिए .NET/Razor को मजबूर करने का कोई तरीका है?
var js_bignum = @price.ToUnlocalizedFormat(); (Is there something like this?)
मैं यह पता लगाने की कोशिश कर रहा हूं कि इस प्रकार की स्थिति के लिए सर्वोत्तम अभ्यास क्या हैं।
धन्यवाद!
क्या आप रेज़र अभिव्यक्तियों से विधियों को कॉल कर सकते हैं? क्योंकि यह वही है जो 'नंबर। टॉस्ट्रिंग (CultureInfo.InvariantCulture)' करना चाहिए (सही नेमस्पेस इत्यादि आयात करने के लिए मॉड्यूलो रेजर सिंटैक्स)। – millimoose