.NET "代码块"?



所以在。net中我们有。

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

这些到底是什么?

还有更多吗?是否有一个详尽的清单,这些都是什么?我甚至都不知道要搜索什么——直到今晚我发现<%:是什么,我才听说过"代码块"这个词。

它们通常被称为代码块,但是这个术语在Microsoft文档中并不存在。微软称它们为内联表达式。.NET框架中的内联表达式。他们提供ASP。关于如何处理这些符号(<% %>)中的语句的。NET框架指令。在我知道它的名字之前,是的,在社区里询问它有点困难。不确定是否有一个"详尽"的列表,但有几个比你指定的更多。下面是其他代码块的列表,以及它们的用法和示例。

符号—名称—描述—eg(格式)


<%——标准代码块——表示以下语句为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注入攻击的风险。如果文本框上的输入类似于"< button type = submit > Submit</button >",它将向页面添加一个按钮。当然会有验证,但希望这一点是清楚的。


<%:——编码的代码块——类似于<%=,但响应是HTML编码的。如。Name is <%:textBox.Text%>(无论文本框上的输入是什么,它都会显示出来。如果输入是"< button type = submit > Submit</button >",输出将是"Name is <button type = submit> Submit</button>"。


<%#——数据绑定代码块——表示数据绑定代码块,用于引用当前数据对象。仅可用于数据绑定控件,如中继器等。

<%#:——编码的数据绑定——表示编码的数据绑定代码块,其中数据绑定值被编码。如:

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

(如果使用了encoded (<%#:),建议它显示字面量而不进行解释。)"


<%$——属性代码nuget——用于引用配置值,例如在Web.config中定义的值。

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

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


<%@—Page指令—这是用来配置Web表单(或控制或母版页,取决于指令的类型)。如:

<%@ Page.. <%@ Master

上面提到的所有信息和示例都来自Adam Freeman的Pro asp.net 4.5书,第12章。在我看来,这本书很棒。

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

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

<%是脚本块。下面是MSDN

中的一个很好的描述

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

<%#块通常用于绑定控件。更多信息请看这篇短文。

我不确定是否所有这些WebForm标签都有一个合适的集合名称,但它们应该都包含在ASP中。. NET页面语法

还有一个不在列表中,ASP。净表达式:

<%$ expressionPrefix: expressionValue %>

对于名字很难明确和确定,因为微软经常不明确和确定。例如,我不知道<%: ... %>的名称是什么。

也很难确定当前的文档是什么,微软正在努力解决这个问题。

下表交叉引用了《ASP简介》中的内容。.NET内联表达式与。NET框架中的。. NET页面语法

<>之前语法|支持文章|文档& lt; %……%比;|嵌入式代码块|内联代码(参见代码渲染块)& lt; % =…%比;内联表达式块|内联表达式(参见代码渲染块)& lt; % @……%比;|文本模板指令|文本模板指令& lt; % #…%比;数据绑定表达式|数据绑定表达式& lt; % $……%比;| Expression Builder | ??& lt; %—…%比;|服务器端评论|服务器端评论& lt; %:……%比;| n/a | n/a之前

& lt; %……%>:嵌入式代码块

嵌入式代码块提供了与经典ASP的向后兼容性,也被PHP和JSP使用。由于它们被嵌入到HTML中,它们往往使HTML难以阅读和维护。

& lt; % =…%>: Inline Expression Block

内联表达式块被当作Response.Write(…)语句的参数来执行。

& lt; %:……%>: ? ?

与<%= server . htmlcode(…)%> where…是server . htmlcode的参数。

& lt; % @……%>:文本模板指令

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

& lt; % #…%>:数据绑定表达式

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

& lt; % $……%>: Expression Builder

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

Expression Prefix: Expression Value

表达式前缀是表达式的类型,例如Web中的节点。"配置文件"one_answers"表达式值"为节点中键的名称。结果是为键指定的值。

& lt; %—…%>:服务器端注释块

服务器端注释块允许在HTML中的任何地方放置注释,除了代码块。

杂项语法

如果对您有帮助,以下内容也在Microsoft Docs文档页面中。

<>之前语法|文档& lt; tagprefix: tagname runat = " server "/比;|自定义服务器控件|服务器端对象标签& lt; !——#include file|virtual="filename"——>|服务器端包含指令

作者Adam Freeman在介绍Visual c# 2010中写道:

<%和%>标记的官方术语是服务器端脚本分隔符,尽管它们通常被称为代码掘金 .

相关内容

  • 没有找到相关文章

最新更新