2011-11-12 12 views
10

मेरा लोकेल एक अल्पविराम , का उपयोग करता है, और दशमलव विभाजक के लिए . नहीं।MVC3 दशमलव फ़ील्ड और स्थानीयकरण के लिए संपादित करें

MVC3 में, जब मैं एक दृश्य संपादित करें जहां दशमलव मान

@Html.EditorFor(model => model.MyDecimalVal) 

साथ दिखाया जाता है मूल्य सही ढंग से दिखाया गया है खोलें।

जब मैं अल्पविराम के साथ मूल्य दर्ज करता हूं, तो मुझे त्रुटि मिलती है "मान एक संख्या नहीं है" और यदि मैं डॉट के साथ मान दर्ज करता हूं, तो मुझे कोई त्रुटि नहीं मिलती है, लेकिन वास्तव में कोई मान सहेजा नहीं जाता है।

इस स्थिति को कैसे संभालें?

उत्तर

6

अपने मान्यता तर्क अदल-बदल करके इस के साथ चारों ओर हो रही है पहले से ही ऐसा यहां समझाया गया है एक अलग दृष्टिकोण है: फ़ाइल की सामग्री कुछ इस तरह होना चाहिए।

<system.web> नोड के नीचे नीचे दिए गए कोड को अपनी वेब.कॉन्फिग फ़ाइल के अंदर रखें यदि आप संस्कृति को en पर सेट करना चाहते हैं। यह दशमलव सीमांकक का ख्याल रखना होगा:

<globalization culture="en-US" uiCulture="en" /> 

मुझे यकीन है कि नहीं कर रहा हूँ लेकिन DateTime के लिए, आप अभी भी अपने सर्वर के स्थान के लिए बाध्य कर रहे हैं।

+1

धन्यवाद, इसने डेटाटाइम और संख्या प्रारूप दोनों का ख्याल रखा (लेकिन उन्हें लोकेल के लिए मजबूर किया) – bzamfir

+1

@bzamfir सही। मैं इस दृष्टिकोण को क्या कहता हूं वह एक अस्थायी तय है। स्थायी फिक्स आपके सर्वर लोकेशंस को कॉन्फ़िगर करना होगा। – tugberk

+4

दुनिया में कैसे यह एक समाधान है - संस्कृति को अंग्रेजी में मजबूर करना? – gangelo

16

This blog post अल्पविराम दशमलव विभाजक के क्लाइंट-साइड समर्थन को सक्षम करने के लिए डिफ़ॉल्ट jQuery मान्य संख्या और श्रेणी नियमों को ओवरराइड करने की अनुशंसा करता है।

इन समस्याओं को ठीक करने के लिए, हम रेंज() और नंबर() कार्यों के लिए jquery.validate.js फ़ाइल से डिफ़ॉल्ट कार्यान्वयन ले सकते हैं। हम फिर एक और .js फ़ाइल बनाएं (jQueryFixes.js कहें), जिसमें हम इन डिफ़ॉल्ट कार्यों को उन लोगों के साथ ओवरराइड करते हैं जिनमें को अल्प विभाजक के रूप में अल्पविराम शामिल है।

$.validator.methods.range = function (value, element, param) { 
    var globalizedValue = value.replace(",", "."); 
    return this.optional(element) || (globalizedValue >= param[0] && globalizedValue <= param[1]); 
} 

$.validator.methods.number = function (value, element) { 
    return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:[\s\.,]\d{3})+)(?:[\.,]\d+)?$/.test(value); 
} 
+0

क्या ऐसा करने का कोई उचित तरीका है? –

+0

मेरा मतलब है, विभिन्न संस्कृतियों में विभिन्न दशमलव मूल्यों के संचालन के बारे में क्या? मैं बस एक संस्कृति में मूल्यों को स्टोर करना चाहता हूं लेकिन मैं वेबपेज के आगंतुक को अपनी संस्कृति में दशमलव मूल्यों को रखने और मान्य करने का मौका देना चाहता हूं। –

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