原谅我的ASP无知,但有什么区别?
答案 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';