2013-02-06 13 views
14

मैं रेजर का उपयोग कर जावास्क्रिप्ट में कुछ पंक्तियों को जोड़ रहा हूं। मैंने सोचा कि सबसे आसान तरीका पूरे जावास्क्रिप्ट ब्लॉक को पहले इकट्ठा करना होगा, फिर पूरी चीज को आउटपुट करना होगा। समस्या यह है कि एकल उद्धरण & # 39; के रूप में प्रस्तुत किए जा रहे हैं।रेजर में आउटपुट एकल उद्धरण जेनरेट किया गया जावास्क्रिप्ट स्ट्रिंग

var friendArray = new Array(); 
    @{ 
     int i = 0; 
     string jsString=""; 
     foreach(var friend in friends) 
     { 
      jsString = jsString + "friendArray["; 
      jsString = jsString + i.ToString(); 
      jsString = jsString + "]='"; 
      jsString = jsString + friend.displayname; 
      jsString = jsString + "';"; 
      i++; 
     } 
     @jsString; 
    } 

ऊपर इस उत्पन्न करता है:

यह इस सही ढंग से लिखने को पाने के लिए अंतिम पंक्ति को बदलने के लिए संभव है

friendArray[0]=& #39;Hollister& #39;;friendArray[1]=& #39;Festus& #39;; 

उत्तर

27

आप इस तरह से outputting द्वारा एचटीएमएल की एन्कोडिंग बंद कर देते हैं सकता है :

@Html.Raw(jsString) 
+1

यह काम करता है। असल में मैंने इसे पहले कोशिश की, लेकिन मुझे नहीं लगता था कि मुझे @ उपसर्ग करने की ज़रूरत है, इसलिए कुछ भी नहीं लिखा है। धन्यवाद। – Dave

+1

@ डेव: हाँ, इसके बिना आप सी # -मोड में हैं, इसलिए @ बलों रेजर/एचटीएमएल मोड वास्तव में परिणाम को आउटपुट करते हैं। –

+3

यह स्क्रिप्ट इंजेक्शन के लिए एक संभावित एवेन्यू है यदि jsString विश्वसनीय नहीं है। बहुत सावधान रहें। – Bon

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