2011-12-12 14 views
6

से एकल उद्धरण से बचने के लिए मेरे पास आइटम के भीतर एक चर है। नाम जिसमें स्ट्रिंग "यह मंगलवार है!"। जावास्क्रिप्ट त्रुटियों को कम करने के लिए, सी # नियंत्रक में मैं पहले से ही इस एकल उद्धरण से बच निकला हूं। वेबपृष्ठ पर, यह इस "यह मंगलवार की तरह दिखता है!"।एक एमवीसी 3 रेजर व्यू वेरिएबल

यह कम से कम किसी भी जावास्क्रिप्ट त्रुटियों को रोकता है, हालांकि, मैं नहीं चाहता कि वास्तविक स्ट्रिंग बैकस्लैश को उसमें से बचने के लिए प्रदर्शित न हो।

जावास्क्रिप्ट त्रुटियों की देखभाल करने के बाद मैं बचने में कैसे सक्षम हो सकता हूं? यह एक साधारण समस्या की तरह लगता है, लेकिन मैं एमवीसी 3 के साथ थोड़ा अपरिचित हूँ। किसी भी संकेत की बहुत सराहना की है! मेरी खोज में मुझे कोई विशिष्ट उदाहरण नहीं मिला।

उस्तरा दृश्य में मेरी कोड का एक उदाहरण:

@foreach (var item in Model) 
{ 
    @Html.DisplayFor(modelItem => item.Name) // item.Name = "It\'s Tuesday!" 
} 
+0

जब आप अपने उदाहरण में कोई जावास्क्रिप्ट मौजूद नहीं हैं तो आप जावास्क्रिप्ट त्रुटियों को कम करने के लिए उद्धरण चरित्र से पूर्व-भाग क्यों रहे हैं? –

+0

यह सच है, मेरे उदाहरण में कोई जावास्क्रिप्ट नहीं है। मेरा उदाहरण यह दिखाने के लिए एक बहुत ही बुनियादी स्निपेट था कि कैसे वें प्रश्न में ई स्ट्रिंग मैं रेजर व्यू में प्रदर्शित बैकस्लैश को हटाने की कोशिश कर रहा हूं। वास्तविक समाधान के पृष्ठ पर निश्चित रूप से जावास्क्रिप्ट है। –

+0

जबकि मुझे यकीन है कि आपके पृष्ठ पर जावास्क्रिप्ट है, फिर भी मुझे यह समझ में नहीं आता कि आप एक स्ट्रिंग में उद्धरण से बचने का प्रयास क्यों कर रहे हैं जिसका उद्देश्य लेबल के लिए HTML के रूप में प्रस्तुत करना है। मैं समझ नहीं पा रहा हूं कि आप वहां क्यों भाग रहे हैं। –

उत्तर

21

एक विस्तार विधि बनाएं जिसका आप उपयोग कर सकते हैं या सीधे एन्कोड कर सकते हैं। मैं यह हो रही दृश्य करने से पहले सांकेतिक शब्दों में बदलना नहीं होगा जब तक आप) एक बुरा विचार (एक अलग अपने viewmodel में संपत्ति इस के लिए (नहीं

यह परीक्षण नहीं किया है, लेकिन कुछ इन पंक्तियों के साथ है

 

public static class HtmlExtensions 

{ 
    public static IHtmlString JavaScriptEncode(this HtmlHelper html, string item) 
    { 
     return new HtmlString(HttpUtility.JavaScriptStringEncode(item)); 
    } 
} 
 

आप तो बस दृश्य से @ Html.JavaScriptEncode (yourProperty) को कॉल कर सकते हैं या बस अपने एन्कोडेड संपत्ति का नाम संदर्भित कर सकते हैं।

+0

यह विधि बहुत अच्छा काम करती है, धन्यवाद! मैंने अभी कॉल करने के लिए एक विस्तार विधि बनाई है, और उसके बाद विधि को बैकस्पेस को हटा दें। हालांकि इस मुद्दे के आसपास शायद सबसे बड़ा तरीका नहीं है, लेकिन यह अभी भी जावास्क्रिप्ट को आकर्षित करते हुए चाल करता है। –

10

निम्नलिखित उत्पादन की एन्कोडिंग फिर से रोकने के लिए किया जा सकता है। हालांकि यह आपके साथ ठीक से निपटने पर भरोसा करता है।

MVCHTMLString

@MvcHtmlString.Create(yourString) 
+0

मैंने इसे एक्सटेंशन के साथ संयोजन में उपयोग किया तरीका। आपके पोस्ट के लिए शुक्रिया! दुर्भाग्य से मैं केवल 1 उत्तर को सही के रूप में चिह्नित कर सकता हूं, और कम प्रतिष्ठा के कारण मैं ऊपर नहीं जा सकता। हालांकि, आपके समय की सराहना की जाती है, जो कुछ भी लायक है! –

+0

और मुझे वास्तव में बढ़ावा की आवश्यकता है :-) – RubbleFord

0

मैं अपने विचारों गूंगा बनाने के लिए पसंद करते हैं। इसलिए, मेरे पास 'डिस्प्ले' या 'डिस्प्लेनाम' जैसी कुछ संपत्ति होगी जिसे दृश्य के लिए भागने के लिए संभाला जाता है।

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