2012-10-05 7 views
26

मैं एमवीसी 3 और एएसपीनेट सी # में रेजर का उपयोग कर रहा हूं।एमवीसी 3 रेजर में डीकोड किए गए एन्कोडेड HTML को कैसे प्रदर्शित करें?

मेरे पास निम्न कोड के साथ एक दृश्य है। model.ContentBody में कुछ HTML टैग हैं।

मुझे इस HTML सामग्री को DECODED के रूप में प्रदर्शित करने की आवश्यकता होगी।

मैं अपना कोड दृश्य में कैसे बदलूं?

<div class="display-field"> 
     @Html.DisplayFor(model => model.ContentBody) 
</div> 

उत्तर

68
<div class="display-field"> 
    @Html.Raw(Model.ContentBody) 
</div> 

इस कोड को समस्या हल हो!

+4

आपको लगता है कि एक के साथ सावधान रहना चाहता हूँ, यह आँख बंद करके पाठ पर भरोसा करता है और पेज के लिए यह एक स्ट्रिंग के रूप डालता है। क्या होगा यदि मॉडल.कंटेंट बॉडी '' –

+0

धन्यवाद, अपेक्षाकृत आसान –

+0

@ एंडी रद्दात्ज़ आपकी टिप के लिए धन्यवाद, मेरे मामले में सभी सामग्री स्वच्छ और डीबी से सुरक्षित है। – GibboK

34

@Html.Raw मेरे लिए यहाँ काम नहीं था उदाहरण है: -

string name = "&lt;p&gt;&lt;span style=&quot;font-size: small; color: #ff0000;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;span style=&quot;font-size: large; color: #000000;&quot;&gt;Hi&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;This is just a sample,&lt;br /&gt;This will not work with @Html.Raw(),&lt;br /&gt;"; 
    <span>@Html.Raw(name);</span> 

लेकिन इस के बजाय काम किया: -

@MvcHtmlString.Create(HttpUtility.HtmlDecode(@model.ContentBody)) 

या आप भी उपयोग कर सकते हैं: -

@Html.Raw(HttpUtility.HtmlDecode(@model.ContentBody)); 
+0

यह वास्तव में वर्बोज़ लगता है, क्यों न सिर्फ HTML का उपयोग करें। रॉ ?? – GibboK

+1

@GibboK 'MvcHtmlString.Create()' अधिक अर्थपूर्ण आईएमओ है, हालांकि समाधान आपके लिए काम करेगा। –

+0

मुझे आपके जैसी समस्या का सामना करना पड़ रहा है, अब आपके पोस्ट मेरे लिए काम करते हैं। – Rajpurohit

0

दर्रा एक स्ट्रिंग के बजाय आपके मॉडल में MvcHtmlString के रूप में "ContentBody" में।

इस तरह से आप अभी उपयोग कर सकते हैं:

<div class="display-field"> 
     @model.ContentBody 
</div> 

अपने नियंत्रक में एक MvcHtmlString प्राप्त करने के लिए बस का उपयोग करें:

MvcHtmlString myHtmlString = MvcHtmlString.Create("htmlcodeandtext"); 
5

तुम भी नियंत्रक में एचटीएमएल डिकोड कर सकता है देखने के लिए मॉडल भेजने से पहले ,

WebUtility.HtmlDecode()

public ActionResult Index(int id) 
    { 
     var content = _contentRepository.GetContent(id); 
     var classViewModel = new ClassViewModel 
           { 
            ContentBody = WebUtility.HtmlDecode(ClassViewModel.ContentBody) 
           }; 
     return View(classViewModel); 
    } 
1

डिकोड साथ HTML का उपयोग प्रदर्शित करने के लिए उपयोग करें।

@MvcHtmlString.Create(@Model.OurVision) 
-4

नियंत्रक में इस कोड का उपयोग करें:

string noHTML = Regex.Replace(inputHTML, @"<[^>]+>|&nbsp;", "").Trim(); 
संबंधित मुद्दे