ASP.NET MVC标记: <%: %>与<%= %>的区别

5
据我所知,这两种标签类型的作用相同。哪一个更好用呢?
5个回答

8

谢谢。有时我会碰到自己想问但没有时间去问的问题... - Bryce Fischer

4

它们并不相同:

<%=%> is the same as `Response.Write`
<%:%> adds `Server.HtmlEncode` to `Response.Write`

因此,<%:%>更受青睐(自.NET 4.0以来添加),因为它在输出字符串之前添加了编码输出的安全措施。
如果您正在使用.NET 3.5或更早版本,则最佳实践是使用<%=Server.HtmlEncode(val)%>

@Praveen Prasad - 我相信它们应该做同样的工作,但实际上有些不同(不足以引起问题,但如果我没记错的话,其中一个更严格)。 - Oded

2

<%: %> 会自动对值进行HTML编码,因此建议使用它。但是,它只适用于.NET 4。


2
<%: someString %>

就像

<%= HttpUtility.HtmlEncode(someString) %>

2

当您需要对字符串进行消毒(即来自用户输入且可能具有恶意的内容)时,可以使用 " <%:"。

基本上,<&= 会将字符串原封不动地写入 HTML,而 <%: 等同于编写 <%= Html.Encode("something") %>。


<%: %> 通常更好。在 Razor 视图引擎中,Microsoft 让 @ 等同于 <%: %>。如果需要等同于 <%= %> 的行为,则需要使用 @Html.Raw(value)。 - Jeremy Bell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接