是<%:和<%=与嵌入代码(表达式)块相同

Ral*_*ton 36 asp.net-mvc-2

刚刚开始使用MVC 2,我注意到他们使用的初学者模板

<%: Html.ActionLink("Home", "Index", "Home")%>
Run Code Online (Sandbox Code Playgroud)

我确信在MVC 1中它是

<%= Html.ActionLink("Home", "Index", "Home")%>
Run Code Online (Sandbox Code Playgroud)

它们是一样的吗?如果是这样,为什么从等号变为冒号.

Rob*_*sor 42

冒号语法意味着你将自动进行html编码:http://haacked.com/archive/2009/09/25/html-encoding-code-nuggets.aspx

他们不能只对所有现有的<%=块进行html编码,因为已经正确编码的东西(希望大多数项目都在那里)看起来很奇怪.

  • 我喜欢结肠平等的参考,但从侧面看:-) (2认同)

gah*_*ooa 12

<%= 用于写入输出缓冲区.

<%:在HTML编码内容之后用于写入输出缓冲区...除非IHtmlString已在返回的对象上实现了接口.

Scott Guthrie在这个主题上有一篇很好的文章:http: //weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax-for-html-encoding-output-in-asp-净-4-和-ASP净MVC-2.aspx

如果输出已经转义,则可以通过IHtmlString在返回的对象上实现接口来防止双重编码. http://msdn.microsoft.com/en-us/library/system.web.ihtmlstring.aspx


Mat*_*ela 5

ASP .NET 4引入了<%:语法,该语法在将输出呈现到屏幕之前对其进行编码.ASP MVC已经对此进行了编码,但为了更明确,他们也开始使用语法,以便清楚地表明无论何时看到<%:您都可以确定输出将被正确编码.

  • 你在这里缺少的关键词是"HTML",如"HTML编码" - 而不仅仅是"编码". (2认同)