रेजर के साथ एन्कोडेड HTML प्रदर्शित करें


79

मैं डेटाबेस में एन्कोडेड HTML स्टोर करता हूं।

एकमात्र तरीका जो मैं इसे सही ढंग से प्रदर्शित कर सकता है वह है:

<div class='content'>    
   @MvcHtmlString.Create(HttpUtility.HtmlDecode(Model.Content));
</div>

यह बदसूरत है। क्या ऐसा करने का कोई बेहतर तरीका है?

जवाबों:


154

इसे इस्तेमाल करे:

<div class='content'>    
   @Html.Raw(HttpUtility.HtmlDecode(Model.Content))
</div>

धन्यवाद! यह बेहतर है, लेकिन फिर भी मैं जो देख रहा हूं वह नहीं है।
जानी

8
मैंने इस विचार के अनुसार एक विस्तार विधि का निर्माण किया। @ Html.RawDecode (Model.Content)
जानी

3
बस टाल दो; अंत में
Giovanny Farto M.

यह काम करता है, लेकिन यह इतना गंदा है ... इस लिपटे के साथ एक एक्सटेशन विधि बनाना समाप्त हो गया, क्या कोई समझा सकता है कि .Raw सिर्फ काम क्यों करता है?
एगली बेसेरा

48

का उपयोग करें Html.Raw()। फिल हैक ने http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx पर एक अच्छा वाक्यविन्यास गाइड पोस्ट किया ।

<div class='content'>
    @Html.Raw( Model.Content )
</div>

1
उत्तर के लिए धन्यवाद। लेकिन मुझे लगता है कि Html.Raw () 'जैसा है वैसा ही डिस्प्ले है, एनकोड न करें'। इसलिए यदि मैं इसका उपयोग करता हूं, तो डेटाबेस को सहेजने से पहले मैं अपना html डीकोड नहीं कर सकता। तो यह उपयोगकर्ता को बिना किसी 'सुरक्षा' की जांच किए सामग्री दर्ज करेगा। इसलिए मुझे लगता है कि यह सबसे अच्छा समाधान नहीं है।
जानी १

9

यह बहुत आसान है:

HttpUtility.HtmlDecode(Model.Content)

एक अन्य समाधान, आप एक HTMLString भी वापस कर सकते हैं, रेजर सही स्वरूपण का उत्पादन करेगा:

दृश्य में ही:

@Html.GetSomeHtml()

नियंत्रक में:

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

8

तुम भी बस HtmlStringवर्ग का उपयोग कर सकते हैं

    @(new HtmlString(Model.Content))

0

मैं डेटाबेस में एन्कोडेड HTML स्टोर करता हूं।

Imho आपको अपना डेटा html- एनकोडेड डेटाबेस में स्टोर नहीं करना चाहिए। केवल सादे पाठ में संग्रहीत करें (एन्कोडेड नहीं) और बस अपना डेटा इस तरह प्रदर्शित करें और आपका html स्वतः एन्कोड हो जाएगा:

<div class='content'>
    @Model.Content
</div>

0

मुझे सिर्फ \रेज़र और जावा स्क्रिप्ट के साथ बैकस्लैश प्रदर्शित करने के लिए एक और मामला मिला ।

मेरे @Model.AreaNameजैसी लगती है NAME1 \ NAME2 \ NAME3 तो मैं यह जब प्रदर्शित सभी बैकस्लैश चले गए हैं और मैं देख रहा हूँ Name1Name2Name3

मुझे इसे ठीक करने का हल मिला:

var areafullName =  JSON.parse("@Html.Raw(HttpUtility.JavaScriptStringEncode(JsonConvert.SerializeObject(Model.AreaName)))");

पृष्ठ के @using Newtonsoft.Jsonशीर्ष पर जोड़ना न भूलें chtml

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.