.NET“代码块块”?

时间:2011-11-20 23:07:50

标签: asp.net .net webforms-view-engine

所以在.NET中我们有......

<%=

<%: (new to .NET 4 - syntactic sugar for HTML encoding)

<%#

<%@

究竟是什么?

还有更多吗?是否有详尽的清单以及它们在哪里?很难知道甚至可以搜索什么 - 当我发现&lt;%:was时,我甚至没有听到“代码块块”这个词,直到今晚。

5 个答案:

答案 0 :(得分:10)

它们通常称为代码块,但Microsoft文档中不存在该术语。 Microsoft将{em>内联表达式称为Introduction to ASP.NET inline expressions in the .NET Framework。它们提供了有关如何在这些符号中处理语句的ASP.NET框架指令(&lt; %%&gt;)。直到我知道它的名字,是的,在社区中询问它有点困难。不确定&#39;穷举&#39;列表,但有一些比你指定的更多。以下是其他代码块的列表及其用途和示例。

符号 - 名称 - 描述 - 例如(格式)


<% - 标准代码块 - 表示以下语句是C#语句。必须遵循C#语法规则。例如

<% string[] cities = { ""London"", ""New York"", ""Paris"" };
string myCity = cities[new Random().Next(cities.Length)];
Response.Write(myCity);%>

<%= - 内容代码块 - 与标准cn类似,返回结果的差异直接插入到浏览器的响应中,而不必使用Response.Write。例如

<%=textBox.Text%> 

(不推荐,包括html注入攻击的风险。如果文本框上的输入类似于&#34; < button type = submit > Submit</button >&#34;,它会在页面上添加一个按钮。当然会有要验证,但希望重点是明确的。)


<%: - 编码代码块 - 与&lt;%=类似,但响应是HTML编码的。例如。  Name is <%:textBox.Text%> (无论文本框中的输入如何,都会显示。如果输入类似于&#34; < button type = submit > Submit</button >&#34;,则输出为&#34;名称为<button type = submit> Submit</button>&# 34。


<%# - 数据绑定代码块 - 引用数据绑定代码块,用于引用当前数据对象。仅适用于像转发器等数据绑定控件。

<%#: - 编码数据绑定 - 表示编码数据绑定值的编码数据绑定代码块。例如

<asp:Repeater ItemType = ""System.String"" SelectMethod = ""GetCities"" runat = ""server">
<ItemTemplate>
<li > <%# Item % > </li>
</ItemTemplate>
</asp:Repeater> 

(如果使用编码(<%#:),则会显示没有解释的文字,建议使用。)&#34;


<%$ --Property code nugget - 用于引用配置值,例如Web.config中定义的配置值。

<asp:Literal Text = " < %$ AppSettings: cityMessage % > " runat = "server" /> 

(从配置文件中检索cityMessage键的值。)


<%@ --Page指令 - 用于配置Web窗体(或控件或母版页,具体取决于指令的类型。例如

<%@ Page.. <%@ Master

所有上述信息和示例均来自Adam Freeman的Pro ASP .NET 4.5书,第12章。优秀的图书imo。

答案 1 :(得分:9)

这些<%@是指令。有关详尽的列表和文档,请参阅MSDN

  

使用时,指令可以位于.aspx或.ascx中的任何位置   文件,虽然标准做法是在开头包含它们   文件。每个指令可以包含一个或多个属性(配对   (具有值)特定于该指令。

<%是脚本块。这是MSDN

中的一个很好的描述
  

嵌入式代码块是在页面期间执行的服务器代码   渲染阶段。块中的代码可以执行编程   当前页面类中的语句和调用函数。

<%#块通常用于绑定控件。有关详细信息,请参阅此简短article

答案 2 :(得分:2)

我不确定所有这些WebForm标记是否都有正确的集体名称,但ASP.NET Page Syntax中应该涵盖所有这些标记。

列表中没有另一个,ASP.NET Expressions

<%$ expressionPrefix: expressionValue %>

答案 3 :(得分:0)

由于Microsoft经常不清楚和明确的名称,因此很难弄清楚和明确的名称。例如,我不知道<%: ... %>的名字是什么。

很难确定当前文档是什么,Microsoft正在努力解决该问题。

下表将Introduction to ASP.NET inline expressions in the .NET Framework中的内容与ASP.NET Page Syntax中的内容进行了交叉引用。

    Syntax      | Support Article           | Docs
    <% ... %>     | Embedded Code Block       | inline code (see Code Render Blocks)
    <%= ... %>    | Inline Expression Block   | inline expression (see Code Render Blocks)
    <%@ ... %>    | Text Template Directive   | Text Template Directive
    <%# ... %>    | Data-Binding Expression   | Data-Binding Expression
    <%$ ... %>    | Expression Builder        | ???
    <%-- ... %>   | Server-Side Comments      | Server-Side Comments
    <%: ... %>    | N/A                       | N/A

<%...%>:嵌入式代码块

Embedded Code Block提供与经典ASP的向后兼容性,并且PHP和JSP也使用它。由于它们嵌入在HTML中,因此它们往往会使HTML难以阅读和维护。

<%= ...%>:内联表达式块

内联表达式块的执行就像它是Response.Write(...)语句的参数一样。

<%:...%>:???

与<%= Server.HtmlEncode(...)%>相同,其中...是Server.HtmlEncode的参数。

<%@ ...%>:文本模板指令

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

<%#...%>:数据绑定表达式

数据绑定表达式将服务器控件属性绑定到数据源。

<%$ ...%>:表达式生成器

表达式生成器将控件属性的值设置为应用程序的配置或资源文件中的值。 Expression Builder表达式包含:

Expression Prefix: Expression Value

其中表达前缀是一种表达类型,例如Web.config文件中的节点,而表达值是节点中键的名称。结果是为密钥指定的值。

<%-...%>:服务器端注释块

服务器端注释块允许将注释放置在HTML中除代码块之外的任何位置。

其他语法

如果有帮助,Microsoft Docs文档页面中也包含以下内容。

    Syntax                                      | Docs
    <tagprefix:tagname runat="server"/>       | Custom Server Control
    <object id="id" runat="server"/>          | Server-Side Object Tag
    <!-- #include file|virtual="filename" --> | Server-Side Include Directive

答案 4 :(得分:0)

在Visual C#2010简介中,作者亚当·弗里曼(Adam Freeman)写道:

  

<%和%>标签的正式术语是服务器端脚本   分隔符,尽管它们通常被称为 code   掘金