我知道<%:是html.encode的事情,但是当我确定我不需要编码时会有很多情况,所以我为什么要浪费时间编码我100%肯定它的东西不需要像例如<%:Url.Action("Index") %>
或<%: Model.Id %>
(int类型)编码?
该:
代码块是ASP.NET 4.0的Web编译器的一部分,不只是打电话Html.Encode()
.它确定字符串是否已经先编码(如果表达式返回一个IHtmlString
那么它可能不会被编码).
这意味着在插入实际数据或从某种类型的辅助方法插入HTML时使用它是安全的(如果您编写自己的辅助方法,它们应始终IHtmlString
从MVC 2 返回).
关于你是否总是使用它,你当然不会.但是我宁愿不去想太多,并且会更加高兴知道我已经走了一些路,以轻而易举的方式抵御XSS攻击; 因此,我几乎总是使用它.
它还鼓励您确保MvcHtmlString
从HTML帮助程序方法返回a 而不是string
.