2010-12-17 17 views
11

मेरा लक्ष्य उपयोगकर्ताओं की संस्कृति के आधार पर क्लाइंट-साइड पर उपयोगकर्ता इनपुट को सत्यापित करना है।वैश्वीकरण के साथ एएसपी.नेट एमवीसी 3 आरसी 2 क्लाइंट साइड सत्यापन

public class User 
{ 
public int UserId { get; set; } 

[Required] 
[StringLength(20,MinimumLength=3)] 
public string Name { get; set; } 

[Required] 
public double Height { get; set; } 
} 

इसके अलावा, मैं पता चल सके कि यह एक वैध संख्या है क्लाइंट साइड सत्यापन सक्षम होना चाहते हैं, तो:

मैं निम्नलिखित संरचना के साथ एक आदिम डेटा मॉडल की है। इसलिए, मैंने अपने _Layout.cshtml के <head> अनुभाग में निम्न पंक्तियां जोड़ दी हैं।

<script src="@Url.Content("~/Scripts/jQuery-1.4.2.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 

जब से मैं (इस विशेष संदर्भ में 0,75 की दशमलव संख्या स्वरूप के साथ जर्मन है जबकि अमेरिका में यह 0.75 होगा) किसी अन्य भाषा स्वरूपों में इनपुट को मान्य करने की क्षमता है चाहता हूँ, मैं जोड़ दिया है निम्नलिखित पंक्तियों (jQuery Globalization PlugIn) पहले उल्लिखित jquery.validate.min.js और jquery.validate.unobtrusive.min.js के बाद।

<globalization culture="de-DE" uiCulture="de-DE" /> 

अब मैं निम्नलिखित व्यवहार का सामना कर रहा हूँ:

<script src="@Url.Content("~/Scripts/jquery.glob.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/globinfo/jquery.glob.de-de.js")" type="text/javascript"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
    $.culture = jQuery.cultures['de-DE']; 
    $.preferCulture($.culture.name); 
}); 
</script> 

इसके अलावा, मैं तो बस यह सुनिश्चित करें कि जर्मन संस्कृति हमेशा चयन किया जाता है बनाने के लिए system.web खंड में web.config में निम्नलिखित पंक्ति जोड़ दिया है :

  • अगर मैं (ध्यान दें जर्मन 'वर्तनी') 0,1 में टाइप "ऊंचाई" के मूल्य के लिए पाठ बॉक्स में, मान्यता त्रुटि संदेश The field Height must be a number प्रतीत होता है और मैं फॉर्म जमा करने में सक्षम नहीं हूं।
  • अगर मैं 0.1 में टाइप करें (अंग्रेजी 'वर्तनी'), मैं प्रपत्र लेकिन सर्वर साइड सत्यापन प्रस्तुत कर सकते हैं निम्नलिखित मान्यता त्रुटि संदेश देता है अब The value '0.1' is not valid for Height.

तो मैं मर ताला जहां किसी तरह का में हूँ मैं बाहर नहीं जा सकता

फिर, मेरा लक्ष्य उपयोगकर्ताओं की संस्कृति के आधार पर क्लाइंट और सर्वर पक्ष पर दशमलव संख्या इनपुट को सत्यापित करना है (इस मामले में इसे जर्मन होने के लिए मजबूर होना पड़ता है)। मैं क्या गलत कर रहा हूं?

किसी भी मदद की अत्यधिक सराहना की जाती है! आपका अग्रिम में ही बहुत धन्यवाद!

उत्तर

8

दुर्भाग्य से jQuery.validate.format और jQuery.Globalization.format फ़ंक्शंस के बीच एक नामकरण संघर्ष है। इसलिए आपको गैर-jquery वैश्वीकरण प्लगइन का उपयोग करने के लिए अपना कोड बदलना होगा।

मैंने अभी इसके बारे में एक ब्लॉग पोस्ट here लिखा है।

आप के लिए यह इस तरह दिखना चाहिए:

<script src="@Url.Content("~/Scripts/globalization.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/globinfo/Globalization.de-DE.js")" type="text/javascript"></script> 
<script type="text/javascript"> 
$.validator.methods.number = function (value, element) { 
    if (!isNaN(Globalization.parseFloat(value))) { 
     return true; 
    } 
    return false; 
} 
$(document).ready(function() { 
    $.culture = jQuery.cultures['de-DE']; 
    $.preferCulture($.culture.name); 
    Globalization.preferCulture($.culture.name); 
}); 
</script> 

पर्याप्त होना चाहिए कि।

+0

आपकी 'if' गलत रूप से' 0' को अमान्य मान के रूप में पहचानती है; 'वापसी का उपयोग करें! isNaN (Globalization.parseFloat (मान)); 'समारोह के शरीर के रूप में। –

+0

क्या आपने प्लगइन निर्माता को सूचित किया था? यदि आप पहले से नहीं कर चुके हैं तो कृपया ऐसा करें। मुझे एसडीई के समान समस्या है लेकिन मैं अनौपचारिक या ओवरराइटिंग विधियों के साथ "हैक" नहीं करना चाहता हूं। – toebens

+0

ठीक है, बस मुझे कोड खोदने का एक टन बचाया - आप एक स्टार हैं, ब्लॉग पोस्ट के लिए बहुत बहुत धन्यवाद और एसओ पर इसे साझा करना! – Dav

1

मुझे UnobtrusiveJavaScript को अक्षम करना पड़ा। पृष्ठ तुरंत प्रतिक्रिया नहीं करता है, लेकिन कम से कम यह काम करता है।

आप वेब में डिफ़ॉल्ट रूप से अक्षम कर सकते हैं। कॉनफिग।

<appSettings> 
    <add key="enableSimpleMembership" value="false"/> 
    <add key="ClientValidationEnabled" value="true"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="false"/> 
</appSettings> 

और मैं सत्यापन के लिए माइक्रोसॉफ्ट स्क्रिप्ट का उपयोग:

MicrosoftAjax.js 
MicrosoftMvcAjax.js 
MicrosoftMvcValidation.js 

और यह भी jQuery-1.4.4.min.js & jquery.glob बात है, लेकिन मुझे लगता है कि मैं उन्हें आंतरिक रूप से उपयोग करें। एमएस स्क्रिप्ट द्वारा सत्यापन किया जा रहा है।

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