J'utilise Razor dans MVC 3 et Asp.net C #.
J'ai une vue avec le code suivant. model.ContentBody
a des balises HTML.
J'aurais besoin d'afficher ce contenu HTML commeDÉCODÉ.
Comment changer mon code dans la vue?
<div class="display-field">
@Html.DisplayFor(model => model.ContentBody)
</div>
<div class="display-field">
@Html.Raw(Model.ContentBody)
</div>
Ce code a résolu le problème!
@Html.Raw
n'était pas un travail pour moi voici l'exemple: -
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>
Mais cela a fonctionné à la place: -
@MvcHtmlString.Create(HttpUtility.HtmlDecode(@model.ContentBody))
ou vous pouvez aussi utiliser: -
@Html.Raw(HttpUtility.HtmlDecode(@model.ContentBody));
Vous pouvez également décoder le code HTML dans le contrôleur avant d’envoyer le modèle à la vue,
WebUtility.HtmlDecode ()
public ActionResult Index(int id)
{
var content = _contentRepository.GetContent(id);
var classViewModel = new ClassViewModel
{
ContentBody = WebUtility.HtmlDecode(ClassViewModel.ContentBody)
};
return View(classViewModel);
}
S'il vous plaît utiliser pour afficher l'utilisation HTML avec décoder.
@MvcHtmlString.Create(@Model.OurVision)
Eh bien, pour résumer .. Dans mon service/contrôleur, tout en renvoyant le modèle à la vue
....
Description = WebUtility.HtmlDecode(narration.Narration1)
Mon cshtml, où le tinyMCE est affiché .. juste lier régulièrement (J'utilisais HtmlAttributeHelper pour une autre raison. Vous pouvez l'ignorer)
<div>
@Html.TextAreaFor(model => model.Description, HtmlAttributeHelper.ConditionalDisable(false, new {@class = "tinymce"}))
</div>
Et dans la page cshtml où les données sont affichées.
......
<td class="col-Word-wrap">@Html.Raw(HttpUtility.HtmlDecode(@item.Narration1))</td>
Transmettez "ContentBody" en tant que MvcHtmlString à votre modèle au lieu d'une chaîne.
De cette façon, vous pouvez simplement utiliser:
<div class="display-field">
@model.ContentBody
</div>
dans votre contrôleur pour obtenir un MvcHtmlString, utilisez simplement:
MvcHtmlString myHtmlString = MvcHtmlString.Create("htmlcodeandtext");