当我使用@ Html.Raw(mystring)normal时,它会正确呈现示例:
@{ ViewBag.Title = "My Site®"; }
<title>@Html.Raw(ViewBag.Title)</title>
正确呈现<title>My Site®</title>
但是当我在属性中使用它时:
<meta name="description" content="@Html.Raw(ViewBag.Title)" />
它呈现<meta name="description" content="My Site&reg;" />
这是不正确的,因为它不会呈现注册的标记。
你如何纠正这种行为?
答案 0 :(得分:8)
作为patridge pointed在他的回答中,你可以在参数中包含属性标记.Raw
。
在您的情况下会产生类似于以下内容的内容:
<meta name="description" @Html.Raw("content=\"My Site&reg;\"") />
答案 1 :(得分:0)
您可以在_layout.cshtml中执行此操作:
<title>@{var title = new HtmlString(ViewBag.Title);}@title</title>
这对我有用。
答案 2 :(得分:0)
我认为这是最顶尖的解决方案:
@{ ViewBag.Title = "My Site®"; }
<title>@Html.Raw(ViewBag.Title)</title>
<meta name="description" content="@HttpUtility.HtmlDecode(ViewBag.Title)" />