Asp.net mvc Razor-@Html.Raw()仍在编码&;amp;在元标记属性中
当我使用@Html.Raw(mystring)normal时,它会正确地呈现示例:Asp.net mvc Razor-@Html.Raw()仍在编码&;amp;在元标记属性中,asp.net-mvc,asp.net-mvc-3,razor,asp.net-mvc-4,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> @{ViewBag.Title=“我的网站®;”;} @Html.Raw(ViewBag.Title) 将正确呈现My Site®但当我在属性中使用它时: <meta name="description" c
@{ ViewBag.Title = "My Site®"; }
<title>@Html.Raw(ViewBag.Title)</title>
@{ViewBag.Title=“我的网站®;”;}
@Html.Raw(ViewBag.Title)
将正确呈现My Site®代码>但当我在属性中使用它时:
<meta name="description" content="@Html.Raw(ViewBag.Title)" />
它呈现的
不正确,因为这样它就不会呈现注册标记
你如何纠正这种行为 在他的回答中,您只需将属性标记包含在.Raw
的参数中即可
在您的情况下,这将导致类似以下情况:
<meta name="description" @Html.Raw("content=\"My Site&reg;\"") />
您可以在_layout.cshtml中执行此操作:
<title>@{var title = new HtmlString(ViewBag.Title);}@title</title>
@{var title=newhtmlstring(ViewBag.title);}@title
这对我很有效。我认为这是最好的解决方案:
@{ ViewBag.Title = "My Site®"; }
<title>@Html.Raw(ViewBag.Title)</title>
<meta name="description" content="@HttpUtility.HtmlDecode(ViewBag.Title)" />
@{ViewBag.Title=“我的网站®;”;}
@Html.Raw(ViewBag.Title)
Duplicate:and@Ek0nomik这不是真正的重复,因为没有人解决这个问题。他们的建议是将整个标记加载到字符串中,这在每个页面上都是愚蠢的。您只需将属性名称包含在参数to.Raw
中,如上面链接的第二个问题所示。你必须做一个变通,因为这是一个bug:@Ek0nomik我第一次看的时候没有看到第二个问题。它有更好的解决办法。如果你愿意的话,你可以把它作为答案贴出来。否则,我将发布我的代码解决方案,使其可用。不用担心。我补充了一个答案。祝你好运@贾斯汀·赫尔格森这是我唯一能让它工作的方法,谢谢!