Razor 默认对字符串进行编码。没有编码的渲染有什么特殊的语法吗?
问问题
122475 次
8 回答
389
从 ASP.NET MVC 3 开始,您可以使用:
@Html.Raw(myString)
于 2010-12-21T17:53:01.103 回答
61
@(new HtmlString(myString))
于 2010-11-01T17:53:37.480 回答
35
与已经提到的 @Html.Raw(string) 方法一样,如果您输出 MvcHtmlString ,它将不会被编码。这在将您自己的扩展添加到 HtmlHelper 或从您知道可能包含 html 的视图模型返回值时很有用。
例如,如果您的视图模型是:
public class SampleViewModel
{
public string SampleString { get; set; }
public MvcHtmlString SampleHtmlString { get; set; }
}
对于 Core 1.0+(和 MVC 5+),使用 HtmlString
public class SampleViewModel
{
public string SampleString { get; set; }
public HtmlString SampleHtmlString { get; set; }
}
然后
<!-- this will be encoded -->
<div>@Model.SampleString</div>
<!-- this will not be encoded -->
<div>@Html.Raw(Model.SampleString)</div>
<!-- this will not be encoded either -->
<div>@Model.SampleHtmlString</div>
于 2011-06-29T08:05:06.177 回答
11
@Html.Raw()
请谨慎使用,因为您可能会在编码和安全方面造成更多麻烦。我理解用例,因为我必须自己这样做,但要小心......只是避免允许所有文本通过。例如仅保留/转换特定字符序列并始终对其余字符进行编码:
@Html.Raw(Html.Encode(myString).Replace("\n", "<br/>"))
然后您就可以放心,您没有创建潜在的安全漏洞,并且任何特殊/外来字符都可以在所有浏览器中正确显示。
于 2015-04-06T21:43:45.407 回答
5
对于 ActionLink,它通常在链接文本上使用 HttpUtility.Encode。在这种情况下,您可以
HttpUtility.HtmlDecode(myString)
在使用 HtmlActionLink 解码我想要传递的字符串时使用它。例如:
@Html.ActionLink(HttpUtility.HtmlDecode("myString","ActionName",..)
于 2017-02-09T04:59:32.203 回答
1
您还可以使用 WriteLiteral 方法
于 2016-04-21T14:16:18.583 回答
1
HTML RAW:
@Html.Raw(yourString)
于 2016-11-03T21:05:24.257 回答
0
您只需要将 paste ®复制到您的字符串中。例如:
@Html.ActionLink("Something ®", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
太棒了。
于 2021-10-01T11:12:54.233 回答