剃刀 - @ Html.Raw()仍在编码&在元标记属性中

时间:2013-02-15 19:01:01

标签: asp.net-mvc asp.net-mvc-3 razor asp.net-mvc-4

当我使用@ Html.Raw(mystring)normal时,它会正确呈现示例:

@{ ViewBag.Title = "My Site®"; }
<title>@Html.Raw(ViewBag.Title)</title>

正确呈现<title>My Site&reg;</title>但是当我在属性中使用它时:

<meta name="description" content="@Html.Raw(ViewBag.Title)" />

它呈现<meta name="description" content="My Site&amp;reg;" />这是不正确的,因为它不会呈现注册的标记。

你如何纠正这种行为?

3 个答案:

答案 0 :(得分:8)

作为patridge pointed在他的回答中,你可以在参数中包含属性标记.Raw

在您的情况下会产生类似于以下内容的内容:

<meta name="description" @Html.Raw("content=\"My Site&amp;reg;\"") />

答案 1 :(得分:0)

您可以在_layout.cshtml中执行此操作:

<title>@{var title = new HtmlString(ViewBag.Title);}@title</title>

这对我有用。

答案 2 :(得分:0)

我认为这是最顶尖的解决方案:

@{ ViewBag.Title = "My Site&reg;"; }
<title>@Html.Raw(ViewBag.Title)</title>
<meta name="description" content="@HttpUtility.HtmlDecode(ViewBag.Title)" />