में टेक्स्ट की लंबाई बढ़ाता है मुझे यह एएसपीनेट एमवीसी एप्लिकेशन में यह समस्या है।टेक्स्ट क्षेत्र में नई पंक्ति वर्ण सी #
मेरे मॉडल में से एक में "विवरण" फ़ील्ड है। इस फ़ील्ड के लिए डेटाबेस कॉलम NVarchar(300)
पर सेट है।
मेरे विचार में मैं निम्नलिखित के रूप में एक टेक्स्ट क्षेत्र बना रहा हूं।
@Html.TextAreaFor(m => m.Description, new { maxlength = "300" })
मैं "jquery.validate.unobtrusive.min.js" का उपयोग कर रहा क्लाइंट साइड सत्यापन के लिए। तो जब टेक्स्टरेरा में उपयोगकर्ता प्रकार और सामग्री की लंबाई 300 से अधिक वर्णों में जाती है तो यह संदेश प्रदर्शित करती है "कृपया 300 से अधिक characaters दर्ज करें।"
सब कुछ ठीक सागरियो आने तक ठीक काम करता है। उपयोगकर्ता टेक्स्ट क्षेत्र में डेटा का पालन करता है।
f
f
f
f
f
f
f
f
sdfa
(इस सामग्री 8 नई लाइनों है)
"विनीत" सत्यापन के अनुसार इस सामग्री लंबाई 300 (प्रत्येक नई लाइन की गिनती "\ n" एक ही चरित्र के रूप में) तो सत्यापन गुजरता है और पेज पोस्ट वापस।
मेरी सी # कोड में, एन्कोडिंग की वजह से, एक ही सामग्री की लंबाई के लिए हो जाता है 308 (प्रत्येक नई लाइन की गिनती "\ r \ n" के रूप में 2 अक्षर) जो टैन में डेटा बेस ऑपरेशन विफल रहता है यह केवल 300 की अनुमति देता है के रूप में वर्ण।
अगर कोई यह कह रहा है कि मेरे पास इस विशेष संपत्ति पर StringLength
विशेषता होनी चाहिए, तो मेरे पास यह नहीं होने का निम्नलिखित कारण है।
यदि मैं इस विशेषता को डालता हूं तो क्लाइंट-साइड सत्यापन इस विशेष संपत्ति के लिए नहीं होता है, यह सर्वर पर जाता है और चूंकि मॉडल मान्य नहीं है, यह त्रुटि संदेश वाले पृष्ठ पर वापस आता है।
कृपया मुझे सलाह दें कि इसके लिए संभावित समाधान क्या हो सकता है?
विभाजन मेरे लिए काफी काम नहीं करता था। मुझे पिछली लाइन ब्रेक के साथ समस्या थी, जिसे आपकी विधि का उपयोग करके गिना नहीं गया था। मैंने इसके बजाय इसका उपयोग किया: '// गिनती को सर्वर से मेल करने के लिए 2 रिक्त स्थान वाले न्यूलाइन वर्णों को प्रतिस्थापित करता है। var replaceValue = value.replace (/ (\ n)/gm, ""); बदले बदले वैल्यू। लम्बाई; ' नोट: कोड ब्लॉक किसी भी तरह से केवल एक स्थान दिखाता है जहां दो होना चाहिए। – Ben