1. 程式人生 > >理解ASP.NET MVC引擎處理模型字串的預設行為,涉及Html.Raw()和HttpUtility.HtmlDecode()

理解ASP.NET MVC引擎處理模型字串的預設行為,涉及Html.Raw()和HttpUtility.HtmlDecode()

MVC引擎預設會將Model屬性值中包含的html字串做encode,所以如屬性中包含類似 <br> 這樣的標記,MVC引擎會將它們轉換成html實體碼 %3Cbr%3E 

所以1:在編輯時

<div class="col-md-10">
    @Html.TextArea("Eval", HttpUtility.HtmlDecode(main.Eval), new { @class = "form-control textAreaStyle", name = "" })
</div>

所以2:在顯示時,如果需要將當需要將 <

br> 作為"原生HTML字串"被瀏覽器解析,即代表它本身html編碼含義.如 <br解析為換行,需要使用 @Html.Raw() 方法

<label class="col-md-9 control-label font-normal">@Html.Raw(@Model.Main.Eval)</label>

所以3:在提交時,JS解決方法

HtmlUtil.htmlEncode("Xxx");
//定義部分
var HtmlUtil = {
    htmlEncode: function
(html) { var temp = document.createElement("div"); (temp.textContent != undefined) ? (temp.textContent = html) : (temp.innerText = html); var output = temp.innerHTML; temp = null; return output; }, htmlDecode: function (text) { var temp = document.createElement("div"); temp.innerHTML
= text; var output = temp.innerText || temp.textContent; temp = null; return output; } };