我何时应该在ASP.NET控件中使用#和=?

y0m*_*mbo 27 asp.net data-binding

我已经使用ASP.NET多年了,但我永远不会记得使用#和=是否合适.

例如:

<%= Grid.ClientID %>
Run Code Online (Sandbox Code Playgroud)

要么

<%# Eval("FullName")%>
Run Code Online (Sandbox Code Playgroud)

有人可以解释每个应该使用的时间,以便我可以直接记在心里吗?#仅用于支持数据绑定的控件吗?

Kei*_*ith 43

有几种不同的'蜜蜂蜇':

  • <%@ - 页面指令
  • <%$ - 资源访问
  • <%= - 显式输出到页面
  • <%# - 数据绑定
  • <%-- - 服务器端注释块

ASP.Net 4中的新功能:

  • <%: - 写出页面,但使用HTML编码

ASP.Net 4.5中的新功能:

  • <%#: - HTML编码数据绑定

  • <%$不仅适用于资源访问,还适用于ExpressionBuilders - 其中包含ConnectionStrings,AppSettings和Resource.编写自己的文章也很简单.http://msdn.microsoft.com/en-us/library/system.web.compilation.expressionbuilder.aspx (4认同)
  • @Lankymart在默认的Visual Studio配色方案中以黑色和黄色突出显示,因此`%>`看起来有点像蜜蜂刺痛. (3认同)
  • * bee-stings *是从哪里来的? (2认同)

Joh*_*han 24

<%=%>相当于在放置它的任何地方执行Response.Write("").

<%#%>用于数据绑定,只能在支持数据绑定的情况下使用(如果在代码隐藏中调用Page.DataBind(),则可以在控件外的页面级别使用这些)

数据绑定表达式概述


Guy*_*uck 9

这是丹·克雷维尔(Dan Crevier)的一篇很棒的博客文章,它通过他编写的测试应用程序来展示差异.

在本质上:

  • <%=表达式在渲染时计算
  • <%#表达式在DataBind()时进行计算,如果未调用DataBind(),则根本不进行计算.
  • <%#表达式可用作服务器端控件中的属性.<%=表达式不能.