2

我正在尝试在 asp.net mvc 视图中呈现动态数据库标题。所以我有这样的想法。

@section meta {

    <meta name="title" content="@Model.title" />
}

当模型具有特殊字符(例如西班牙语中的 Misión)时,它会在标题中显示类似 Misi&amp;#243;n...我meta charset utf8在布局中使用的内容。是否有我缺少的特殊编码?

如何Misión在标题页中呈现?

4

2 回答 2

2

Using@someproperty将假定您正在渲染 HTML 并确保对其进行编码以防止跨站点脚本之类的事情。在这种情况下,您希望它呈现原始值,在这种情况下,您需要使用Html.Raw(...)它以原始形式呈现您的内容。

@section meta {
    <meta name="title" content="@Html.Raw(Model.title)" />
}

但是,请注意,如果Model.title可能来自用户生成的内容(或其他一些不受信任的来源),您可能会面临安全问题(例如,如果您Model.title的值是“ test" /> <script ...etc...”,恶意用户可能会使用它来将代码注入您的页面。

编辑:只包括下面我对未来谷歌员工的评论内容,因为这似乎是实际的解决方案......

如果您将其@Html.Raw(Model.title)直接放在页面某处(即不在元标记中)并且它在那里正常工作,您可能会遇到这里讨论的相同问题,在这种情况下,您可以通过使用稍微难看的方法来解决它:

@section meta {
    <meta name="title" @Html.Raw("content=\" + Model.title + "\"") />
}
于 2013-08-01T23:11:08.800 回答
0

方法 - 1

string value1 = "&lt;html&gt;";                  // &lt;html&gt;
string value2 = HttpUtility.HtmlDecode(value1);  // <html>        //While getting
string value3 = HttpUtility.HtmlEncode(value2);  // &lt;html&gt;  //While saving

方法 - 2

Html.Raw("PKKG &nbsp; StackOverFlow");           // PKKG StackOverFlow
于 2013-08-02T03:55:10.310 回答