在.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>
或是
<a hef="http://www.google.com.tw">click me</a>
*上例HTML特殊字元encode可參考W3school的HTML ISO-8859-1 Reference
上面兩個如果你直接使用@將其直印出的話就變成畫面上直接出現你的內容值,這邊用印出一個空白non-breaking space( )為例:
在View裡面的寫法如果是下面這樣
<td class="align-l">
@item.BaseCurrencySymbol
</td>
如果改用Html.Raw()來輸出值的話
<td class="align-l">
@Html.Raw(item.BaseCurrencySymbol)
</td>
從上面就可以明顯看出差異了,這邊再來看一下官方文件的解說(原文內容.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印出