Ответ 1
<div class="display-field">
@Html.Raw(Model.ContentBody)
</div>
Этот код решил проблему!
Я использую Razor в MVC 3 и Asp.net С#.
У меня есть вид со следующим кодом. model.ContentBody
имеет некоторые HTML-теги.
Мне нужно отобразить этот HTML-контент как DECODED.
Как мне изменить свой код в представлении?
<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 в контроллере перед отправкой модели в представление,
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)
Перейдите в "ContentBody" как MvcHtmlString к вашей модели вместо строки.
Таким образом вы можете просто использовать:
<div class="display-field">
@model.ContentBody
</div>
в вашем контроллере, чтобы получить MvcHtmlString, просто используйте:
MvcHtmlString myHtmlString = MvcHtmlString.Create("htmlcodeandtext");
Используйте этот код в контроллере:
string noHTML = Regex.Replace(inputHTML, @"<[^>]+>| ", "").Trim();