How to display HTML data on ASP.Net MVC 3 – 如何顯示把資料庫上的HTML 放進 asp.net mvc 3 上

如何顯示把資料庫上的HTML 放進 asp.net mvc 3
今天開始在公司的其中一個網頁上把之前從Rich Text Editor輸入的資料顯示出來
我的做法是把資料庫的相關資料加進 ViewBag上.
E.G.
ViewBag.Notice =<h1> Share ChiWai ASP.Net MVC3 Show HTML Sample</h1>

我的 Controller

public ActionResult Index()
        {

            ViewBag.Notice = "<h1> Share ChiWai ASP.Net MVC3 Show HTML Sample</h1>";
            ViewBag.NoticeNewHTMLString = new HtmlString("<h1> Share ChiWai ASP.Net MVC3 Show HTML Sample</h1>");
            return View();
        }

之後發現出現了一個小問題..
就是這個句子整句在網頁上顯示出來..
HTML 的Markup 沒有被Render...

我便在想..是不是我應該使用HTML.Decode 來解決這個問題..
HTML.Decode也沒有什麼效果
也嘗試用 new HtmlString.. 結果也沒有分別
最後終於找到解決方法了

解決方法:
只要在cshtml中使用
html.raw便可以了

或者是在 Code Behind 使用 new HtmlString 來轉換這個HTML Markup

以下是我的cshtml:

Original:
&lt;br /&gt;
@ViewBag.Notice
&lt;br /&gt;
New HTML String From Code Behind:
&lt;br /&gt;
@ViewBag.NoticeNewHTMLString
&lt;br /&gt;
New HTML String From cshtml:
&lt;br /&gt;
@{new HtmlString(ViewBag.Notice);}
&lt;p /&gt;

HTML Encode:
&lt;br /&gt;
@Html.Encode(ViewBag.Notice)
&lt;p /&gt;
Raw HTML:
&lt;br /&gt;

結果:

Hope you find it useful

Leave a Reply