MVC 3およびAsp.net C#でRazorを使用しています。
次のコードのビューがあります。 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);
}
さて、要約するために..私のサービス/コントローラーで、ビューにモデルを返しながら
....
Description = WebUtility.HtmlDecode(narration.Narration1)
TinyMCEが表示されるcshtml ..定期的にバインドするだけです(他の目的でHtmlAttributeHelperを使用していました。無視できます)
<div>
@Html.TextAreaFor(model => model.Description, HtmlAttributeHelper.ConditionalDisable(false, new {@class = "tinymce"}))
</div>
そして、データが表示されるcshtmlページで..
......
<td class="col-Word-wrap">@Html.Raw(HttpUtility.HtmlDecode(@item.Narration1))</td>
デコードでのHTMLの使用を表示するために使用してください。
@MvcHtmlString.Create(@Model.OurVision)
「ContentBody」をMvcHtmlStringとして文字列ではなくモデルに渡します。
この方法では、次を使用できます。
<div class="display-field">
@model.ContentBody
</div>
コントローラーでMvcHtmlStringを取得するには、次を使用します。
MvcHtmlString myHtmlString = MvcHtmlString.Create("htmlcodeandtext");