我在一段时间内使用ASP.NET Web Forms和ASP.NET MVC。
因此视图中的<%= %>
表示Response.Write()
,MVC中引入的<%: %>
会添加html转义。
在SqlDataSource中,控件设计器生成类似ConnectionString="<%$ ConnectionStrings:FooConnectionString %>"
的内容,在转发器中使用<%# Eval("") %>
sytax。
我的问题是<%$ %>
和<%# %>
标签到底是什么,它们有什么方法可以转化,它们的表现如何?
答案 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()
。