【问题标题】:How does <%$ %> and <%# %> work in ASP.NET?<%$ %> 和 <%# %> 如何在 ASP.NET 中工作?
【发布时间】:2011-12-01 12:56:38
【问题描述】:

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

所以视图中的&lt;%= %&gt; 意味着Response.Write(),在MVC 中引入的&lt;%: %&gt; 添加了html 转义。

在 SqlDataSource 控件设计器中生成类似 ConnectionString="&lt;%$ ConnectionStrings:FooConnectionString %&gt;" 的内容,在中继器中使用 &lt;%# Eval("") %&gt; 语法。

我的问题是 &lt;%$ %&gt;&lt;%# %&gt; 标签到底是做什么的,它们转换成什么方法以及它们的行为如何?

【问题讨论】:

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


    【解决方案1】:

    &lt;%$ %&gt;expression syntax

    AppSettings、Resources 和 ConnectionStrings 有一些内置的快捷方式。你也可以write your own

    &lt;%# %&gt;databinding expression syntax

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        Expressions vs. Statements, part 2: ASP.NET Code Block Types(网络存档)

        它解释了以下表达式块:

        &lt;%$ %&gt;

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

        &lt;%# %&gt;

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

        &lt;% %&gt;

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

        &lt;%= %&gt;

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

        【讨论】:

        • 您已经删除了您的文章,或者至少它不再存在。此外,当在我的网站上发布只是文章链接(如此处)时,我会受到大量批评。
        • 我已经更新了链接,并在答案中添加了原始文章中的一些信息。
        猜你喜欢
        • 1970-01-01
        • 2014-12-07
        • 1970-01-01
        • 2011-11-10
        • 1970-01-01
        • 1970-01-01
        • 2019-07-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多