2011-08-19 12 views
6

मैं सी # का उपयोग कर एएसपीनेट साइट (वास्तव में, एक डॉटनेटनेट मॉड्यूल) लिख रहा हूं। कोड-बैक से, मैं <script> टैग बनाने की कोशिश कर रहा हूं जहां मैंने एक आवश्यक जेएस वैरिएबल सेट किया है, फिर इसे एचएमटीएल <head> पर संलग्न करें। जेएस var छवि फ़ाइलों के लिए सापेक्ष यूआरएल की एक (शाब्दिक) सरणी है। चूंकि सरणी में तार होते हैं, प्रत्येक आइटम उद्धरण में संलग्न होना चाहिए।HTML-encoding सामग्री से HtmlGenericControl को कैसे रोकें?

समस्या है, <script> और </script> के बीच स्ट्रिंग स्वचालित रूप से, कहीं HtmlEncoded की जा रही है इसलिए प्रत्येक सरणी आइटम के आसपास उद्धरण &quot; के साथ प्रतिस्थापित किया जा रहा है। ऐसा लगता है जब HtmlGenericControl प्रस्तुत किया जाता है। क्या DotNetNuke अपराधी हो सकता है? क्या कोई कामकाज सुझा सकता है?

मेरे वर्तमान कोड (मेरे नियंत्रण में Page_Load हैंडलर से चल): नोड, नहीं innerText संपत्ति के InnerHtml संपत्ति का उपयोग कर पर

HtmlGenericControl PreviewDataScriptTag = new HtmlGenericControl("script"); 
PreviewDataScriptTag.Attributes.Add("type", "text/javascript"); 
StringBuilder PreviewDataScriptCode = new StringBuilder(); 
PreviewDataScriptCode.Append("var preview_imgs = ["); 
string pathPrefix = @""""; 
string pathSuffix = @""","; 
foreach (string path in this.DocPreviewImages) 
{ 
    PreviewDataScriptCode.Append(pathPrefix + PreviewUrlBase + Path.GetFileName(path) + pathSuffix); 
} 
// Remove last comma from js code 
PreviewDataScriptCode.Remove(PreviewDataScriptCode.Length-1, 1); 
PreviewDataScriptCode.Append("];"); 
PreviewDataScriptTag.InnerText = PreviewDataScriptCode.ToString(); 
Page.Header.Controls.Add(PreviewDataScriptTag); 
+1

मैं आपके चर के लिए निम्न-चरण वाले नामों का उपयोग करने की अनुशंसा करता हूं। यह पढ़ने के लिए भ्रमित है। – Amy

+0

टिप के लिए धन्यवाद। मैं वास्तव में .NET के लिए उपयोग नहीं किया जाता, और महसूस करने के बाद सबकुछ के लिए ऊपरी-केस का उपयोग करना शुरू कर दिया। नेट डेवलपर्स ऊपरी-मामले * ऑब्जेक्ट प्रॉपर्टी नाम * में होते हैं। मुझे लगता है कि यह सुधार पर एक मामला है! – bfavaretto

उत्तर

14

देखो।

इनर एचटीएमएल संपत्ति स्वचालित रूप से HTML इकाइयों से और विशेष वर्णों को एन्कोड नहीं करती है। एचटीएमएल इकाइयां आपको < चरित्र जैसे विशेष पात्रों को प्रदर्शित करने की अनुमति देती हैं, जो एक ब्राउज़र सामान्य रूप से विशेष अर्थ के रूप में व्याख्या करेगा। < चरित्र को टैग की शुरुआत के रूप में व्याख्या किया जाएगा और पृष्ठ पर प्रदर्शित नहीं किया जाएगा। < वर्ण प्रदर्शित करने के लिए, आपको इकाई < का उपयोग करने की आवश्यकता होगी।

+0

धन्यवाद, यह चाल है। मैंने सवाल पोस्ट करने से पहले कोशिश की, और किसी भी तरह से यह काम नहीं किया। मुझे कुछ अन्य चर का ट्रैक खोना होगा! मूर्ख में! – bfavaretto

+0

+1: यह मेरे लिए भी काम करता है! –