C# Html.Raw()输出为&;amp;而不是&;
我想在我的控制器中创建一个规范的url,并将其传递给我的ViewModel,以便在标题中显示它 my ViewModel中的url字符串为:C# Html.Raw()输出为&;amp;而不是&;,c#,asp.net-mvc,razor,asp.net-mvc-4,C#,Asp.net Mvc,Razor,Asp.net Mvc 4,我想在我的控制器中创建一个规范的url,并将其传递给我的ViewModel,以便在标题中显示它 my ViewModel中的url字符串为: /books?page=4&pagesize=25 我有以下代码: @if (!string.IsNullOrEmpty(Model.LinkCanonical)) { <link rel="canonical" href="@Html.Raw(Model.LinkCanonical)" /> } 尝试: 这是正确的输出-
/books?page=4&pagesize=25
我有以下代码:
@if (!string.IsNullOrEmpty(Model.LinkCanonical))
{
<link rel="canonical" href="@Html.Raw(Model.LinkCanonical)" />
}
尝试:
这是正确的输出-浏览器将处理html编码的符号,URL将确实指向/books?page=4&pagesize=25
(试试!)这给了我同样的输出UrlDecode不工作了,我在这里看到了:它似乎在那里工作!您不想使用Html.Raw。。。除非非常小心地执行,否则会打开您的站点进行脚本注入攻击(您发布的代码意味着我可以撰写一篇文章到您的站点,将所有登录用户的身份验证cookie发送到另一个网站,然后劫持他们的会话)
<link rel="canonical" href="/books?page=4&pagesize=25" />
@Html.Raw("<link rel=\"canonical\" href=" + Model.LinkCanonical + "\" />")
<link rel="canonical" href="@Html.Raw(HttpUtility.HtmlDecode(Model.LinkCanonical))" />