2011-06-24 8 views
5

का उपयोग करते समय लाइन जोड़ना मैंने एएसपी.नेट एमवीसी के टेक्स्ट एरियाफायर एचटीएमएल सहायक में सबसे कष्टप्रद (संभव) बग देखा है। किसी कारण से, एचटीएमएल हेल्पर टेक्स्टरेरा में किसी भी सामग्री से पहले एक न्यूलाइन जोड़ता है। जाहिर है, यह उद्देश्य पर एक नई लाइन से शुरू होने वाले व्यक्ति की सामग्री के संभावित मुद्दे का मुकाबला करना है, और ब्राउजर इसे कल्पना के अनुसार अनदेखा कर रहा है।एएसपी.नेट एमवीसी टेक्स्टरेरा एचटीएमएल हेल्पर एंटीएक्सएसएस लाइब्रेरी

हालांकि, यह जोड़कर, मैं ज्यादा अधिक कष्टप्रद बग है कि अब मेरी textareas के सभी में अपने आप फ़ॉर्म लोड पर किसी भी सामग्री से पहले एक अतिरिक्त लाइन (: यानी यह मेरा क्षेत्र में किसी भी सामग्री को पहले से पता चलता) मिलता है । ऐसा लगता है कि कुछ इसे थूकने से पहले "न्यूलाइन" एन्कोड कर रहा है।

किसी के पास इसके लिए कोई कामकाज है? मैं उम्मीद थी कि अभिप्रेत व्यवहार में यह पता

<textarea> 
    Stuff</textarea> 
नहीं

<textarea>&#13;&#10;Stuff</textarea> 

मैं हो रही है मुद्रित करने के लिए के लिए है ...

संपादित से देखने पर, यह ऐसा लगता है कि यह डिफ़ॉल्ट HtmlEncoder के बजाय एन्कोडिंग के लिए AntiXssLibrary का उपयोग करने के कारण है। मैं संस्करण 4.0 का उपयोग कर रहा है, और मेरी एनकोडर वर्ग विधि इस प्रकार है:

protected override void HtmlEncode(string value, TextWriter output) 
    { 
     output.Write(Microsoft.Security.Application.Encoder.HtmlEncode(value)); 
    } 

तो मेरी सोचा है कि जब से TagBuilder वर्ग है, जो TextAreaHelper से कहा जाता है, एचटीएमएल टैग की सामग्री encodes, यह मानते हुए है डिफ़ॉल्ट HTML एन्कोडर का व्यवहार, लेकिन AntiXssLibrary अधिक गहन है, और इस प्रकार आप इस व्यवहार को देखते हैं?

+0

मैं हमारे काम कर MVC3 साइटों में से एक पर इस परीक्षण किया है और व्यवहार आप पर लागू नहीं देख पा रहे हैं । शायद आप अधिक जानकारी पोस्ट कर सकते हैं। – JasonG

+0

यह मुझे हर बार हिट करता है मैं एक नई परियोजना शुरू करता हूं। बीटीडब्लू, मैं केवल इस व्यवहार को फ़ायरफ़ॉक्स के साथ देख रहा हूं, आईई या क्रोम अब तक नहीं। – mxmissile

उत्तर

8

कुछ कोड खोदने के बाद, मैंने पाया है कि मेरा विचार सही है। MVC3 TextArea एचटीएमएल हेल्पर TagBuilder वर्ग का उपयोग करता है, और करता है निम्नलिखित:

tagBuilder.SetInnerText(Environment.NewLine + value); 

SetInnerText तर्क यह करने के लिए पारित कर दिया की सामग्री पर HttpUtility.Encode कॉल के रूप में, यह डिफ़ॉल्ट एनकोडर में जो परिणाम पर न सिर्फ बुलाया जा रहा है वास्तविक VALUE, लेकिन इस पर्यावरण पर। न्यूलाइन भी, जिसका अर्थ है कि यदि आप डिफ़ॉल्ट HtmlEncoder (बजाय एंटीएक्सएसएस लाइब्रेरी की तरह) का उपयोग नहीं कर रहे हैं, तो ऐसा कुछ अप्रत्याशित व्यवहार हो सकता है।

tagBuilder.InnerHtml = Environment.NewLine + HttpUtility.Encode(value); 

मैं एक बग रिपोर्ट प्रस्तुत की है:

ठीक बजाय उन्हें कॉल करने के लिए किया जाएगा।

मतलब समय में, मैं सभी textareas से अपमानजनक एन्कोडिंग दूर करने के लिए एक जावास्क्रिप्ट ऑनलोड ठीक लागू करने हूँ:

$("textarea").each(function() { $(this).val($(this).val().trim()); }); 
+1

धन्यवाद इससे मुझे मदद मिली (+1) लेकिन मुझे जेएस को $ ("textarea") में बदलना पड़ा। प्रत्येक (फ़ंक्शन() {$ (यह) .val ($। Trim ($ (this) .val()));}); इसे ie8 में काम करने के लिए (देखें http://stackoverflow.com/questions/3439316/ie8-and-jquerys-trim) – Adam

+1

क्या आपके पास दायर की गई बग के लिए एक यूआरएल है? मैं इसे ट्रैक करना चाहता हूं क्योंकि यह वही मुद्दा हमें प्रभावित कर रहा है। – Jacob

+1

http: //aspnet.codeplex।com/workitem/8848 –

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