3

我使用 ASP.NET Web Forms 和 ASP.NET MVC 有一段时间了。

所以<%= %>在views mean中Response.Write()<%: %>MVC中引入了html转义。

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

我的问题是到底做什么<%$ %><%# %>标签,他们翻译成什么方法以及他们的行为如何?

4

3 回答 3

2

<%$ %>表达式语法

AppSettings、Resources 和 ConnectionStrings 有一些内置的快捷方式。您也可以编写自己的.

<%# %>数据绑定表达式语法

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

于 2011-12-01T12:59:43.450 回答
2

不久前,我从一本书(我不记得是哪本书)中剪辑了这段文字,因为我认为它<%# %>很好地解释了语法 -

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

这只回答了你问题的一半,但 Rob Stevenson-Leggett 的出色回答涵盖了其他所有问题。我只是想通过一些进一步的说明来添加这个。

于 2011-12-01T13:07:47.657 回答
1

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

表达式与语句,第 2 部分:ASP.NET 代码块类型(互联网存档)

它解释了以下表达式块:

<%$ %>

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

<%# %>

ASP.NET 数据绑定语法,仅在调用控件的数据绑定方法时计算。

<% %>

代码块,代码成为RenderMethodDelegate. 代码应该是语句。用来Response.Write输出一些东西。

<%= %>

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

于 2011-12-29T22:25:06.800 回答