Using Html.Raw() method to show content include Html tags in .NET MVC(under Razor ViewEngine)

在.NET MVC中如果使用Razor作為ViewEngine 我們最常用來輸出一個model的參數的用法應該就是@了,這邊來介紹如何輸出包含HTML Tag的內容

詳細的說明與用法可以參考Demo大的ASP.NET MVC3 Razor 初心者容易遇到的問題

這邊要講的是如果你今天model的參數是一個包含HTML Tag的內容,如:

<a hef="http://www.google.com.tw">click me</a>

或是

&#60;a hef=&#34;http://www.google.com.tw&#34;&#62;click me&#60;/a&#62;

*上例HTML特殊字元encode可參考W3school的HTML ISO-8859-1 Reference

上面兩個如果你直接使用@將其直印出的話就變成畫面上直接出現你的內容值,這邊用印出一個空白non-breaking space( )為例:

在View裡面的寫法如果是下面這樣

<td class="align-l">
    @item.BaseCurrencySymbol
</td>

code1

印出內容1

如果改用Html.Raw()來輸出值的話

<td class="align-l">
    @Html.Raw(item.BaseCurrencySymbol)
</td>

code2

印出內容2

從上面就可以明顯看出差異了,這邊再來看一下官方文件的解說(原文內容.aspx))。

###HtmlHelper.Raw Method (String)

Returns markup that is not HTML encoded.

  • Namespace: System.Web.Mvc

  • Assembly: System.Web.Mvc (in System.Web.Mvc.dll)

如果你有使用類似CKEditor這種編輯器plugin的話就一定要記得將輸出改為Html.Raw()的方式來轉換,避免直接將encode的Html Tag印出