ASP.NET“特殊”标记

249

这些“特殊”的ASP.NET标记的官方名称是什么,例如:

<%# %>
<%= %>
<%@ %>
<%$ %>

我似乎无法确定这些标签的概念或通用名称,因此我在搜索更多信息时遇到了问题。 另外,有人可以给我一个所有可能的“特殊标签”的快速概述以及每个标签的作用(或者指向资源)吗?


1
如果它们包含代码,Microsoft也称它们为“嵌入式代码块”(Embedded Code Blocks)。 - Robert Harvey
5个回答

378
官方名称为"服务器端脚本分隔符"或"ASP.NET内联表达式"。Visual Studio 2008语法高亮设置对话框将其称为"HTML服务器端脚本"。微软的人在他们的博客中把它们叫做"代码块"。
  • <%@ %>ASP.NET Web Pages指令,用于配置页面和控件的编译器设置(例如:<%@ Control Inherits="MyParentControl" %>)。
  • <%@ %>也是应用程序指令,用于为global.asax指定特定于应用程序的设置。与页面指令不同,它只使用不同的标记集。
  • <% %>代码渲染块(用于内联代码)之一,是4种嵌入式代码块之一。用于将服务器端代码包含到生成类的Render()方法中(例如:<% x = x + 1; %>)。格式:单/多行或多个链接(例如:if/then/else穿插html),但不能用于声明函数。
  • <%= %>代码渲染块(用于内联表达式),用作<%Response.Write(value)%>的简写形式。
  • <%: %>(非官方的“HTML编码代码块”)与上一个相同,但输出已进行HTML编码。
  • <%# %>数据绑定表达式,用于单向(只读)或双向(可更新)绑定,通过EvalXpathBind或表达式(例如下拉控件的选定值)。通过控件的属性标记将表达式绑定到数据绑定控件属性,或作为单独的标记使用,生成一个具有其Text属性上的值的DataBoundLiteralControl实例。表达式由控件的DataBinding事件处理程序计算。
  • <%#: %>HTML编码数据绑定表达式(在ASP.NET 4.5中新增)。它结合了<%# %><%: %>的功能。
  • <%$ %>ASP.NET表达式生成器,用于通过服务器标记属性进行控件属性的运行时表达式绑定。与AppSettingsConnectionStringsResources一起使用(或您自己的自定义扩展, 例如使用代码后端属性)。这些赋值将添加到生成类的OnInit()方法中。
  • <%-- --%>服务器端注释,用于从编译中排除内容(因此,如果在代码后端引用了已注释掉的控件,则会生成错误)。与html注释不同,内容将包含在输出中。
  • <!-- #Include ... -->服务器端包含指令,用于将文件的内容插入到页面、控件或全局文件中。当用户控件过于繁琐时,以及无法使用主控件页时,这非常有用。

还有一种代码声明块,是最终的嵌入式代码块形式。

<script runat="server">
bool IsTrue() {
  return false;
}
</script>

这用于将额外的成员(方法等)包含到从ASP.NET标记生成的类中。这些仅仅是提供"主要是为了保持与旧版ASP技术的向后兼容性",不建议使用。


1
我相信有一个<%$ ... %>可以绑定appsettings/connection strings。 - sisve
我没有听说过那个。你有来源吗? - Sedat Kapanoglu
3
它们被称为ASP.NET表达式。请参见http://msdn.microsoft.com/en-us/library/d5bd1tad.aspx。 - elo80ka

7

对于你的姓名问题,我没有答案,但是MSDN "ASP.NET页面语法"页面非常不错(或者说,那是顶级页面;其下面的页面提供更多信息)。

编辑:我之前认为<%# ... %>没有包含在列表中,但当然它是在数据绑定表达式下。天啊。


此链接目前无法使用。您必须在其之前选择一个 .NET 框架版本。 - Sam
1
@Sam:啊,谢谢 - 我想它是在.NET 4.5发布时被弃用了,不知道为什么。我已经编辑了链接。 - Jon Skeet
1
我以为Jon Skeet不从事Web开发了...! - CodeArtist

6
微软的工程师们有时称之为“nuggets”或“code nuggets”。

6

我一直觉得这个快速入门页面非常有用,每当我对服务器端语法有疑问时。它详细介绍了8种不同的标记样式,并提供了每种样式的说明性示例,以及解释了优缺点。

但是它没有提到页面级别指令,我IRC在快速入门的其他地方有详细介绍。

当然,这与ASP.NET 2.0相关。


这是一个仅包含链接的回答,请将相关信息内联。 - zzzzBov
1
链接已失效 :-( - Roland
https://web.archive.org/web/20140704071057/http://quickstarts.asp.net/QuickStartv20/aspnet/doc/pages/syntax.aspx - Jeffrey Kern

0

我也听说过这些被称为“V字符串”,包括在StackOverflow Podcast中。


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