我在MVC 3和Asp.net C#中使用Razor。如何顯示在MVC 3 Razor中解碼的編碼HTML?
我有下面的代碼視圖。 model.ContentBody
有一些HTML標籤。
我需要顯示此HTML內容DECODED。
我怎麼更改我的代碼在View?
<div class="display-field">
@Html.DisplayFor(model => model.ContentBody)
</div>
我在MVC 3和Asp.net C#中使用Razor。如何顯示在MVC 3 Razor中解碼的編碼HTML?
我有下面的代碼視圖。 model.ContentBody
有一些HTML標籤。
我需要顯示此HTML內容DECODED。
我怎麼更改我的代碼在View?
<div class="display-field">
@Html.DisplayFor(model => model.ContentBody)
</div>
<div class="display-field">
@Html.Raw(Model.ContentBody)
</div>
此代碼解決了這個問題!
@Html.Raw
沒有工作對我來說這裏是例子: -
string name = "<p><span style="font-size: small; color: #ff0000;"><span style="font-size: small;">&nbsp;<span style="font-size: large; color: #000000;">Hi</span><br />&nbsp; <br />This is just a sample,<br />This will not work with @Html.Raw(),<br />";
<span>@Html.Raw(name);</span>
但是這個工作,而不是: -
@MvcHtmlString.Create(HttpUtility.HtmlDecode(@model.ContentBody))
,或者您也可以使用: -
@Html.Raw(HttpUtility.HtmlDecode(@model.ContentBody));
看起來真的很冗長,爲什麼不用Html.Raw? – GibboK
@GibboK'MvcHtmlString.Create()'是更多的語義IMO,雖然這兩種解決方案會爲你工作。 –
我面臨着和你一樣的問題,現在你的職位爲我工作。 – Rajpurohit
通行證在「ContentBody」中將MvcHtmlString替換爲您的模型而不是字符串。
這樣你可以使用:
<div class="display-field">
@model.ContentBody
</div>
在你的控制器獲得MvcHtmlString只需使用:
MvcHtmlString myHtmlString = MvcHtmlString.Create("htmlcodeandtext");
你也可以在控制器解碼HTML發送模型視圖前,
WebUtility.HtmlDecode()
public ActionResult Index(int id)
{
var content = _contentRepository.GetContent(id);
var classViewModel = new ClassViewModel
{
ContentBody = WebUtility.HtmlDecode(ClassViewModel.ContentBody)
};
return View(classViewModel);
}
請使用,以顯示與解碼HTML中使用。
@MvcHtmlString.Create(@Model.OurVision)
使用此代碼控制器:
string noHTML = Regex.Replace(inputHTML, @"<[^>]+>| ", "").Trim();
你要小心的那一個,它盲目地信任文本,並將其投入到頁面作爲一個字符串。如果Model.ContentBody等於'' –
謝謝,比預期的更容易 –
@Andy Raddatz感謝您的提示,在我的情況下,所有的內容都經過了消毒和安全的數據庫。 – GibboK