我试图通过Google找到这两者之间的区别,但是我无法找到确切的定义,也无法准确地搜索符号。
现在我知道你可以在<%# %>之间放置一段代码,并且必须调用Page.DataBind()方法以应用它,我认为这就是<%# %>的工作原理。但是<%= %>代表什么意思呢?什么时候该使用它?
我试图通过Google找到这两者之间的区别,但是我无法找到确切的定义,也无法准确地搜索符号。
现在我知道你可以在<%# %>之间放置一段代码,并且必须调用Page.DataBind()方法以应用它,我认为这就是<%# %>的工作原理。但是<%= %>代表什么意思呢?什么时候该使用它?
基本区别如下:
<%= %>
表达式是在渲染时计算的。
<%# %>
表达式是在 DataBind()
时计算的,如果没有调用 DataBind()
,则根本不会计算。
<%# %>
表达式可以用作服务器控件中的属性。
<%= %>
表达式不能这样做,通常用于引用属性或字段。
例如:
<%= Response.Write() %>
<ItemTemplate>
<%# DataBinder.Eval("Title") %>
</ItemTemplate>
你可以在此处查看MSDN上更详细的解释: <%= %>和<%# %>有什么区别?
希望这可以帮助你。
<%= %>
用于引用属性/字段。就像在该位置内联一个Response.Write
。
<%# %>
用于使用Eval / Bind进行数据绑定。取自MSDN
Eval方法在数据绑定控件(如GridView,DetailsView和FormView控件)的模板中评估后期绑定数据表达式。运行时,Eval方法调用DataBinder对象的Eval方法,
ASP.NET 4.0引入了<%: something %>
,类似于<%= %>
但转义内容(因此将<
转换为<
等)
因此,最终您只能在某些控件中使用<%# %>(那些从BaseDataBoundControl
继承的控件)
这里有一篇文章http://msdn.microsoft.com/en-us/library/aa479321.aspx,讲解了在.NET中如何进行数据绑定。
我会添加一个链接,其中列出了所有特殊的Asp.net内联标签: http://naspinski.net/post/inline-aspnet-tags-sorting-them-all-out-(3c25242c-3c253d2c-3c252c-3c252c-etc).aspx(它不包含<%: %>
)
<%= %>
,它可以引用页面方法能够访问到的任何字段/属性/方法。你只能在某些控件内部使用 <# %>
,如 GridView
,它会连接到在 GridView
中声明的 DataSource
(或通常是 BaseDataBoundControl
)。对于许多控件(如 GridView
),它不仅连接到 DataSource
,而且直接连接到当前的 DataRow
。 - xanatos用于引用属性/字段。就像在页面上将Response.Write“内联”在那个位置一样。
很明显,你不能在服务器端控件的属性中使用Response.Write
。 - xanatos<%= ... %>
用于小块信息,通常来自对象和单个信息,如单个字符串或整数变量:
The Date is now <%= DateTime.Now.ToShortDateString() %>
The value of string1 is <%= string1 %>
<%# .. %>
用于绑定表达式,例如Eval和Bind,最常见于数据控件如GridView、Repeater等:
<asp:Repeater ID="rptMeetings" DataSourceID="meetings" runat="server">
<ItemTemplate>
<%# Eval("MeetingName") %>
</ItemTemplate>
</asp:Repeater>
网络资源:内联 asp.net 标记...整理它们