我正在尝试在 asp.net mvc 视图中呈现动态数据库标题。所以我有这样的想法。
@section meta {
<meta name="title" content="@Model.title" />
}
当模型具有特殊字符(例如西班牙语中的 Misión)时,它会在标题中显示类似
Misi&#243;n
...我meta charset utf8
在布局中使用的内容。是否有我缺少的特殊编码?
如何Misión
在标题页中呈现?
我正在尝试在 asp.net mvc 视图中呈现动态数据库标题。所以我有这样的想法。
@section meta {
<meta name="title" content="@Model.title" />
}
当模型具有特殊字符(例如西班牙语中的 Misión)时,它会在标题中显示类似
Misi&#243;n
...我meta charset utf8
在布局中使用的内容。是否有我缺少的特殊编码?
如何Misión
在标题页中呈现?
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 + "\"") />
}
方法 - 1
string value1 = "<html>"; // <html>
string value2 = HttpUtility.HtmlDecode(value1); // <html> //While getting
string value3 = HttpUtility.HtmlEncode(value2); // <html> //While saving
方法 - 2
Html.Raw("PKKG StackOverFlow"); // PKKG StackOverFlow