• 沙里软件

  • ShaliSoft.com [手机站]   办公桌收纳抽屉
  • 首页
  • 博文
  • 演示
  • 管理
  • asp.net中Eval()、Bind()、<%%>、<%=%>比较有什么区别

    网络   2016/3/30 13:29:38

    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("Subject") %> //绑定字段
    <%# 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 返回对象类型的值,
    //显示两位小数
    <%# DataBinder.Eval(Container.DataItem, "UnitPrice", "${0:F2}") %>

    格式:
    {0:d} 日期只显示年月日
    {0:yyyy-mm-dd} 按格式显示年月日
    {0:c} 货币样式
    <%#Container.DataItem("price","{0:¥#,##0.00}")%>
    <%# DataBinder.Eval(Container.DataItem,"Company_Ureg_Date","{0:yyyy-M-d}")%>
    Specifier Type      Format    Output (Passed Double 1.42)   Output (Passed Int -12400) 
    c   Currency         {0:c}      $1.42      -$12,400 
    d   Decimal          {0:d}     System.FormatException   -12400 
    e   Scientific       {0:e}     1.420000e+000     -1.240000e+004 
    f   Fixed point      {0:f}   1.42     -12400.00 
    g   General          {0:g}   1.42      -12400 
    n   Number with commas for thousands   {0:n}   1.42      -12,400 
    r   Round trippable     {0:r}   1.42      System.FormatException 
    x   Hexadecimal     {0:x4}   System.FormatException    cf90 

    {0:d} 日期只显示年月日
    {0:yyyy-mm-dd} 按格式显示年月日

    样式取决于 Web.config 中的设置
    {0:c}   或 {0:£0,000.00} 货币样式,标准英国货币样式
    显示为£3,000.10

    {0:c}   或 string.Format("{0:C}", price); 中国货币样式
    显示为 ¥3,000.10

    {0:c}   或 string.Format("{0:C}", price); 美国货币样式

    Eval(" ")绑定两个字段:

    CommandArgument='<%#Eval("dyid").ToString()+Eval("dyid1").ToString()+… %>'这种形式就行
    你把Eval("").ToString()当成一个普通字符串,而'<%# %>'保留就行,你高兴怎么处理就怎么处理,
    所有字符串的操作都有效,你还可以用静态函数来处理这些字符串。
    
    <asp:TextBox ID="TextBox5" runat="server" class="inputwidth100" 
    Text='<%# Eval("RZMJ").ToString()+Eval("LDDW").ToString() %>'></asp:TextBox>
    区别:
    绑定表达式 
    <%#  Eval("字段名") %> 
    <%#  Bind("字段名") %> 
    区别 eval是只读数据,Bind是可更新的.(可以读取和写入)
    对于程序员来说最根本的区别是:
    1.Bind是可更新的,是Bind绑定列可编辑,并且可以和数据源控件交互,直接和数据库交互,但是用Bind的话,程序端的自定义操作就不能用了,比如Convert,ToString()等,或自己写的函数,在程序端都不可以
    2.eval是只读数据,用eval的话不可以和数据源控件交互,是单向的,但是可以自定义操作
    比如上面的<%# Eval("字段名").ToString().Trim()%> 
    本人从来和数据库交互自己写代码,所以对我来说操作的Eval更方便,基本不用Bind,而且以前写过,绑定泛型的时候
    Bind都不支持嵌套类
    
    下面接受啊<%%> <%= %>
    <% %> 放在 HTML中写后台程序代码.


    阅读(3188) 分享(0)

    上一篇: SQL set statistics命令
    下一篇: 移动设备屏幕适配,字体px pt dp的区别?

  • 精彩推荐

    ◆ MySQL配置优化
    ◆ WINDOWS 2003 IIS6 支持SHA256。基础连接已经关闭 发送时发生错误修复
    ◆ sql2000增加序号列,自动增加列,ROW_NUMBER()
    ◆ SQL set statistics命令
    ◆ Google Analytics与百度统计的原理
    ◆ OutputCache 缓存 VaryByCustom的使用,增加缓存后手机端无法做判断的处理
    ◆ SQLSERVER数据库检查DBCC CheckDB
    ◆ 为什么mysql使用SELECT*比SELECT字段 查询速度还快
    ◆ 谷歌镜像网站大全 google翻墙地址大全
    ◆ 携程全线瘫痪,传言代码被恶意删除
  • 用心做事 不能唯利是图

    • 吊儿
    • 用QQ联系我17905772
  • 搜索


  • 最新文章

    • 导出Excel 格式 mso-number-format
    • 服务器iis支持tls1.2,windows server 2008 r2 中IIS启用TLS 1.2(安装SSL后用TLS 1.2)
    • MySQL配置优化
    • EditPlus 添加文件比较工具winmerge
    • 滚动悬浮固定JS特效

  • 热门文章

    • php sso单点登录实现代码
    • 中国菜刀(China chopper) 最新黑客工具
    • redis.conf中文版(基于2.4)
    • 搜索引擎名单大全
    • php图片上传类,支持加水印,生成略缩图

  • 最新图库


  • 最新评论


  • 友情链接

  • 沙里软件

  • 最近访客

    Powered by ShaliSoft.com 豫ICP备13008529号

    免责声明:本站部分内容来源于互联网,转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责,也不构成任何其他建议。如果发现侵犯版权,联系QQ17905772进行删除。