Eval,Bind,<% %>,<%# %>和<%= %> 笔记
1.<% %>用来绑定后台代码
如:
< %
for(int i=0;i<100;i++)
{
Reaponse.Write(i.ToString());
}
%>
2.<%# %> 是在绑定控件DataBind()方法执行时被执行,用于数据绑定
如: < %# Container.DataItem("title") %>
3.<%= %>用来绑定后台的变量或方法且有返回值 的,但此时的变量名或方法的访问修饰符为protected或public
如:<%=name%> <%=getstr()%>
4.eval和bind
eval和bind都是绑定datatable或者其他(集合,等)中的内容,那么他们有什么区别呢?
性能方面怎么样呢?eval有哪几种用法呢?
ASP.NET中的Eval和DataBinder.Eval方法
bind是双向绑定,但需数据源可更改才能用。
ASP.NET 2.0改善了模板中的数据绑定操作,把v1.x中的数据绑定语法DataBinder.Eval(Container.DataItem, fieldname)
简化为Eval(fieldname)。
Eval方法与DataBinder.Eval一样可以接受一个可选的格式化字符串参数。
Eval语法与DataBinder.Eval的不同点在于,
Eval会根据最近的容器对象(例如DataListItem)的DataItem属性来自动地解析字段,
而DataBinder.Eval需要使用参数来指定容器。
由于这个原因,Eval只能在数据绑定控件的模板中使用,而不能用于Page(页面)层。当然,ASP.NET 2.0页面中仍然支持DataBinder.Eval,你可以在不支持简化的Eval语法的环境中使用它。
用法<%# Bind("Name") %> //绑定字段
<%# Container.DataItemIndex + 1%> //实现自动编号
<%# Container.ItemIndex %> //Repeater自动编号
<%# DataBinder.Eval(Container.DataItem, "[n]") %>
通常使用的方法
<%# DataBinder.Eval(Container.DataItem, "ColumnName") %>
<%# DataBinder.Eval(Container.DataItem, "ColumnName", null) %>
<%# DataBinder.Eval(Container, "DataItem.ColumnName", null) %>
其他用法
<%# ((DataRowView)Container.DataItem)["ColumnName"] %>
<%# ((DataRowView)Container.DataItem).Row["ColumnName"] %>
<%# ((DataRowView)Container.DataItem)["adtitle"] %>
<%# ((DataRowView)Container.DataItem)[n] %>
<%# ((DbDataRecord)Container.DataItem)[0] %>
<%# (((自定义类型)Container.DataItem)).属性.ToString() %>//如果属性为字符串类型就不用ToString()了
Eval用法
DataBinder.Eval范例
<%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") %>
格式化字符串参數是可选的。如果忽略参数,DataBinder.Eval 返回对象类型的值。