【问题标题】:ASP.NET "special" tagsASP.NET “特殊”标签
【发布时间】:2010-10-13 13:28:11
【问题描述】:

像这样的“特殊” ASP.NET 标签的正式名称是什么:

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

我似乎无法弄清楚这些的概念名称或众所周知的名称,因此我无法搜索更多信息。作为奖励,任何人都可以快速了解所有可能的“特殊标签”以及每个标签的作用(或指向我的资源)吗?

【问题讨论】:

标签: asp.net syntax tags


【解决方案1】:

正式名称为“server-side scripting delimiters”或“ASP.NET inline expressions”。 Visual Studio 2008 语法高亮设置对话框调用这些“HTML 服务器端脚本”。微软人员在他们的博客中称它们为“代码块”。

  • &lt;%@ %&gt;Directive for ASP.NET Web Pages。用于页面和控件以配置页面/控件编译器设置 (&lt;%@ Control Inherits="MyParentControl" %&gt;)。
    • &lt;%@ %&gt; 也是 Application Directive。用于为 global.asax 指定特定于应用程序的设置。与页面指令不同,因为它只使用不同的标记集。
  • &lt;% %&gt;Code Render Block (for inline code)Embedded Code Blocks 的 4 种形式之一。用于在生成的类的Render() method (&lt;% x = x + 1; %&gt;) 中包含服务器端代码。格式:单行/多行或多行链接(例如if/then/else 穿插html)但不能用于声明函数。
  • &lt;%= %&gt;Code Render Block (for inline expressions)。用作&lt;%Response.Write(value)%&gt; 的简写
  • &lt;%: %&gt;(非正式的“Html Encoding Code Block”)与之前相同,但输出是 HTML 编码的。
  • &lt;%# %&gt;Data-binding Expression。用于通过EvalXpathBind 或表达式(例如,下拉控件的选定值)进行单向(只读)或双向(可更新)绑定。通过控件的属性标记或作为单独的标记将表达式绑定到数据绑定控件属性,该标记生成具有Text 属性值的DataBoundLiteralControl 实例。表达式由控件的DataBinding 事件处理程序评估。
  • &lt;%#: %&gt;HTML Encoded Data-Binding Expression(ASP.NET 4.5 中的新功能)。它结合了&lt;%# %&gt;&lt;%: %&gt; 的功能。
  • &lt;%$ %&gt;ASP.NET Expression Builder。用于通过服务器标记属性对控件属性进行运行时表达式绑定。与AppSettingsConnectionStringsResources(或your own custom extension,例如使用代码隐藏属性)一起使用。这些分配被添加到生成的类的OnInit() 方法中。
  • &lt;%-- --%&gt;Server-Side Comment。用于从编译中排除内容(如果在代码隐藏中引用了注释掉的控件,则会产生错误)。与 html cmets 不同,内容将包含在输出中。
  • &lt;!-- #Include ... --&gt;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",不推荐使用。

【讨论】:

【解决方案2】:

您的姓名问题没有答案,但 MSDN "ASP.NET Page Syntax" 页面非常好(或者更确切地说,这是顶级页面;它下面的页面提供了更多信息)。

编辑:我之前认为&lt;%# ... %&gt; 不包含在列表中,但它当然是在数据绑定表达式下。呵呵。

【讨论】:

  • 此链接目前无效。您必须先选择一个 .NET 框架版本。
  • @Sam:啊,谢谢 - 我认为当 .NET 4.5 出现时它已经退役了,出于某种原因。我已经编辑了链接。
  • 我以为 Jon Skeet 没有做 Web 开发...!
【解决方案3】:

每当我对服务器端语法有疑问时,我总是发现this QuickStart page 非常有用。它详细介绍了 8 种不同的标记样式,并提供了每种标记样式的说明性示例,并解释了优缺点。

不过,它没有提到页面级指令,IIRC 在快速入门的其他地方有详细说明。

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

【讨论】:

【解决方案4】:

微软人有时称它们为“掘金”或“代码掘金”。

【讨论】:

    【解决方案5】:

    我还在 StackOverflow 播客上听说过这些被称为“V stings”的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-07
      • 1970-01-01
      • 2011-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多