<%#%>之间的区别是什么?和<%=%>?

时间:2008-10-01 22:41:33

标签: .net asp.net

原谅我的ASP无知,但有什么区别?

5 个答案:

答案 0 :(得分:18)

这些在某种程度上被非正式地称为“蜜蜂叮咬”。有4种类型:

在DataBinding阶段调用

<%# %>

<%= %>用于从代码中获取值到UI层。意味着向后兼容ASP应用程序。不应该在.NET中使用。

<%@ %>代表directives,允许在不诉诸代码的情况下设置行为。

<%: %>(在ASP.NET 4中引入)与%=相同,但增加了HtmlEncoding输出功能。目的是将其作为默认用法(超过%=)以防止脚本注入攻击。

  

指令指定的设置   由页面和用户控件使用   编译器处理时的编译器   ASP.NET Web窗体页面(.aspx文件)   和用户控制(.ascx)文件。

     

ASP.NET处理任何指令块   (&lt;%@%&gt;)不包含   显式指令名称为@ Page   指令(用于页面)或作为@   控制指令(针对用户   控制)。

@Esteban - 添加了指令的msdn链接。如果您需要...更多解释,请告诉我。

答案 1 :(得分:3)

答案 2 :(得分:2)

数据绑定时使用#版本。 &lt;%=只是一个简单的Response.Write

答案 3 :(得分:2)

与问题不完全相关,asp.net中还有一个名为Expression Builder的相关符号:

<asp:SqlDataSource ... Runat="server"
 ConnectionString="<%$ ConnectionStrings:Northwind %>"
/>

<asp:Literal Runat="server"
  Text="<%$ Resources:MyResources, MyText %>"
/>

并且可以扩展,请参阅http://msdn.microsoft.com/en-us/magazine/cc163849.aspx#S4

答案 4 :(得分:0)

.aspx中使用母版页的javascript。

var e = document.getElementById('<%= lblDescription.ClientID %>');
e.innerHTML = 'getElementById(\'lblDescription\') will be null';