怎么<%$%>和<%#%>在ASP.NET工作?

时间:2011-12-01 12:56:38

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

我在一段时间内使用ASP.NET Web Forms和ASP.NET MVC。

因此视图中的<%= %>表示Response.Write(),MVC中引入的<%: %>会添加html转义。

在SqlDataSource中,控件设计器生成类似ConnectionString="<%$ ConnectionStrings:FooConnectionString %>"的内容,在转发器中使用<%# Eval("") %> sytax。

我的问题是<%$ %><%# %>标签到底是什么,它们有什么方法可以转化,它们的表现如何?

3 个答案:

答案 0 :(得分:2)

<%$ %>expression syntax

AppSettings,Resources和ConnectionStrings有一些内置的快捷方式。您还可以write your own

<%# %>databinding expression syntax

这在数据绑定控件中用于解析绑定对象的属性值。

答案 1 :(得分:2)

我前一段时间从一本书(我记不起哪本书)中删除了这段文字,因为我认为它很好地解释了<%# %>语法 -

  

熟悉经典ASP应用程序的人可能会这么认为   &lt;%#%&gt;语法看起来很熟悉。它的目的是相似的,但是   你需要确保不要混淆两者,因为这样做   可能会导致您的应用程序无法正常运行而在ASP中   (和ASP.NET),&lt;%=%&gt;语法导致内部的任何内容   要在渲染时评估的括号,&lt;%#%&gt;独特的括号   仅在绑定期间评估ASP.NET。正如您稍后将看到的那样   此部分,页面和页面上的每个可绑定控件都有一个   DataBind()方法。数据绑定中包含的表达式   括号(&lt;%#%&gt;)仅在控件的DataBind时计算   方法被调用。

这只回答了你问题的一半,但Rob Stevenson-Leggett的优秀答案涵盖了其他一切。我只是想通过进一步的说明来添加它。

答案 2 :(得分:1)

我写了一篇关于ASP.NET Web窗体中可用的不同类型表达式的博客文章:

Expressions vs. Statements, part 2: ASP.NET Code Block Types(互联网档案)

它解释了以下表达式块:

<%$ %>

ASP.NET表达式语法,用于绑定应用程序设置,连接字符串和资源。

<%# %>

ASP.NET Data-Binding语法,仅在调用控件的数据绑定方法时进行评估。

<% %>

代码块,代码成为RenderMethodDelegate的一部分。代码应该是声明。使用Response.Write输出内容。

<%= %>

与上面相同,但代码应该是单个表达式。它将包含在HtmlTextWrite.Write()