2011-01-25 11 views
41

मेरे पास मेरे डीबी में एक टेबल है जहां गुणों में से एक एचटीएमएल पेज (एचटीएमएल, हेड और बॉडी टैग के बिना) है, और मैं इसे अपने विचारों में से एक के बीच में रखना चाहता हूं - कहें, मैं एक कोटर्रोलर कहता हूं विधि जो तर्क लेती है, और मॉडल के रूप में इस एचटीएमएल बड़ी स्ट्रिंग को पारित करने के दृश्य को वापस कर देती है। मैं इसके लिए खोजा गया (बहुत ज्यादा नहीं है, मैं मानता है), और निम्न विधि पाया:क्या एएसपी.नेट एमवीसी 3 में डेटाबेस से कच्चे एचटीएमएल प्रदर्शित करना संभव है?

<%= System.Web.HttpUtility.HtmlDecode(yourEncodedHtmlFromYouDatabase) %> 

here in stackoverflow. मिला था कि मैं एक ऐसी ही उस्तरा aproach की कोशिश की, मैं इस के साथ समाप्त हो गया:

@System.Web.HttpUtility.HtmlDecode("<h1>Test</h1>") 

यही विचार है, लेकिन जैसा कि मैंने योजना बनाई थी, यह काफी काम नहीं करता था।

+0

क्या 'yourEncodedHtmlFromYouDatabase' कैसा दिखता है प्रदर्शित करने के लिए अनुमति देगा? मुझे लगता है कि एचटीएमएल '

टेस्ट

'वास्तव में इस तरह कुछ एन्कोड किया जाएगा:' & lt: h1 > टेस्ट एंड लेफ्टिनेंट:/एच 1 > '। –

+0

दरअसल, यह टैग का उपयोग करने की तरह अधिक होगा। मेरे पास अभी तक डीबी तैयार नहीं है, लेकिन यही वह है जिसे हम करने की योजना बना रहे हैं, इसलिए मैं विकल्पों की तलाश में हूं। –

+0

एमवीसी 2 के लिए यह प्रश्न: http://stackoverflow.com/questions/2169805/mvc2-is-there-an-html-helper-for-raw-html –

उत्तर

77

आप सभी की जरूरत है: @Html.Raw(yourEncodedHtmlFromYouDatabase)

मैं यह सोचते हैं रहा है कि डेटाबेस में एचटीएमएल ठीक से (एक विश्वसनीय स्रोत से या कम से कम) स्वच्छ कर दिया गया है, क्योंकि यदि नहीं, तो आप अपने आप को जा खोलने पार करने के लिए कर सकता है साइट स्क्रिप्टिंग हमले।

आपका दृष्टिकोण काम नहीं करने का कारण यह है कि डिफ़ॉल्ट रूप से रेजर एचटीएमएल-एन्कोड आउटपुट (प्रत्येक बार जब आप कुछ प्रदर्शित करने के लिए @ का उपयोग करते हैं)। Html.Raw रेज़र को बताता है कि आप HTML पर भरोसा करते हैं और आप इसे एन्कोड किए बिना प्रदर्शित करना चाहते हैं (क्योंकि यह पहले से ही कच्चा HTML है)।

+1

बहुत बहुत धन्यवाद। सुरक्षा के लिए, मुझे विश्वास है कि ऐसी कोई समस्या नहीं है, क्योंकि हम इस एचटीएमएल को स्वयं बनायेंगे। –

+0

खुशी है कि मैं मदद कर सकता हूं। :) –

10

आप एक HTMLString भी वापस कर सकते हैं और रेजर सही स्वरूपण आउटपुट करेगा, उदाहरण के लिए।

@Html.GetSomeHtml() 

public static HtmlString GetSomeHtml() 
{ 
    var Data = "abc<br/>123"; 
    return new HtmlString(Data); 
} 

यह आप HTML

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