2013-12-16 9 views
9

मेरे परिदृश्य में काफी आम लगता है लेकिन मुझे अब तक अच्छा समाधान नहीं मिला है। तो बैक एंड में बैठे एमएसएसएलएल डेटाबेस के साथ एएसपी.नेट-एमवीसी एप्लीकेशन है। मॉडल में कक्षा ए को स्ट्रिंग फ़ील्ड विवरण शामिल है जिसमें 100 वर्णों तक सीमित होना आवश्यक है।स्ट्रिंग फ़ील्ड लंबाई सीमा और लाइन ब्रेक

[StringLength(100)] 
    public virtual string Description { get; set; } 

डेटाबेस में संगत स्तंभ स्तंभ लंबाई = 100 साथ nvarchar है: इस प्रकार यह घोषित किया है। यूआई में, विवरण फ़ील्ड को टेक्स्टरेरा द्वारा अधिकतम लम्बाई = 100 के साथ दर्शाया गया है।

अब समस्या तब होती है जब टेक्स्टरेरा में लाइन ब्रेक होते हैं। उन्हें क्लाइंट साइड पर 1 वर्ण के रूप में व्याख्या किया जाता है लेकिन सर्वर की ओर उन्हें पर्यावरण द्वारा प्रतिनिधित्व किया जाता है। न्यूलाइन जो 2 अक्षर (\ r \ n) है। इसलिए यह डेटाबेस कॉलम की लंबाई से अधिक है (वास्तव में सर्वर साइड सत्यापन पूरे बैक-एंड चीज़ से पहले विफल रहता है लेकिन आइए सादगी के लिए सत्यापन छोड़ दें)।

समाधान मैं अब तक पाए जाते हैं:

  1. आदेश दो पात्रों के रूप में पाठ क्षेत्र में लाइन ब्रेक की व्याख्या करने में क्लाइंट साइड पर कुछ जादू जोड़ें। मुझे इस समाधान को पसंद नहीं है क्योंकि यह उपयोगकर्ता को भ्रमित कर सकता है।
  2. सर्वर पक्ष पर \ r \ n \ n \ n के साथ बदलें। एक हैक की तरह लगता है कि कुछ साइड इफेक्ट्स हो सकता है।
  3. डेटाबेस में कॉलम की लंबाई को हटाएं/बढ़ाएं। सबसे आसान एक (सर्वर-साइड सत्यापन समस्या को ध्यान में रखे बिना) लेकिन कहें कि यह मामला नहीं है।

मुझे लगता है कि उन तीनों के अलावा कुछ और होना चाहिए।

उत्तर

1

यह एमवीसी के साथ एक पुराना और ज्ञात मुद्दा है (मुझे यकीन नहीं है कि यह हल हो गया है) लेकिन विभिन्न ब्राउज़र अलग-अलग लाइन ब्रेक का इलाज करते हैं। मेरा सुझाव कस्टम मॉडल बाइंडर जैसा है जो आपको यहां मिलता है jQuery validate textarea maxlength bug

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