像这样的“特殊”ASP.NET 标记的正式名称是什么:
<%# %>
<%= %>
<%@ %>
<%$ %>
我似乎无法弄清楚这些的概念或众所周知的名称,因此我在搜索更多信息时遇到了困难。作为奖励,任何人都可以给我一个所有可能的“特殊标签”的快速概要以及它们每个标签的作用(或为我指出一个资源)?
最佳答案
正式名称为“server-side scripting delimiters ”或“ASP.NET inline expressions ”。 Visual Studio 2008 语法突出显示设置对话框将这些称为“HTML 服务器端脚本”。微软人员在他们的博客中称它们为“代码块”。
-
<%@ %>
是 Directive for ASP.NET Web Pages 。用于页面和控件来配置页面/控件编译器设置 (<%@ Control Inherits="MyParentControl" %>
)。-
<%@ %>
也是 Application Directive 。用于指定 global.asax 的应用程序特定设置。与页面指令不同,因为它仅使用不同的标签集。
-
-
<% %>
是 Code Render Block (for inline code) 。 Embedded Code Blocks 的 4 种形式之一。用于将服务器端代码包含到Render()
method生成的类的 (<% x = x + 1; %>
)。格式:单行/多行或多链接(例如if/then/else
散布在 html 中),但不能用于声明函数。 -
<%= %>
是 Code Render Block (for inline expressions) 。用作<%Response.Write(value)%>
的简写 -
<%: %>
(非官方的“Html Encoding Code Block ”)与之前的相同,但输出是 HTML 编码的。 -
<%# %>
是 Data-binding Expression 。用于通过Eval
进行单向(只读)或双向(可更新)绑定(bind),Xpath
,Bind
、或表达式(例如下拉控件的选定值)。通过控件的属性标记将表达式绑定(bind)到数据绑定(bind)控件属性,或者作为生成DataBoundLiteralControl
的单独标记。其值为Text
的实例属性(property)。表达式由DataBinding
求值控件的事件处理程序。 -
<%#: %>
是 HTML Encoded Data-Binding Expression (ASP.NET 4.5 中的新增功能)。它结合了<%# %>
的功能和<%: %>
. -
<%$ %>
是 ASP.NET Expression Builder 。用于通过服务器标记属性对控件属性进行运行时表达式绑定(bind)。与AppSettings
一起使用,ConnectionStrings
,或Resources
(或 your own custom extension ,例如使用代码隐藏属性)。这些分配被添加到OnInit()
生成的类的方法。 -
<%-- --%>
是 Server-Side Comment 。用于从编译中排除内容(因此如果在代码隐藏中引用注释掉的控件,则会生成错误)。与 html 注释不同,内容将不会包含在输出中。 -
<!-- #Include ... -->
是 Server-Side Include Directive 。用于将文件的内容插入到页面、控件或全局文件中。在用户控件过度使用且无法使用母版页的情况下很有用。
还有一个Code Declaration Block ,最终的嵌入式代码块形式。
<script runat="server">
bool IsTrue() {
return false;
}
</script>
这用于将附加成员(方法等)包含到从 ASP.NET 标记生成的类中。这些仅提供过 "primarily to preserve backward compatibility with older ASP technology"不建议使用。
关于ASP.NET "special"标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/649428/