• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > ASP.NET Eval进行数据绑定的方法

ASP.NET Eval进行数据绑定的方法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了eval asp.net,asp.net,asp net培训,asp和asp.net的区别,零基础学asp.net等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

假设你已经了解ASP.NET Eval 1.1的数据绑定(特别是Container这个局部变量)的机制,这里主要分析ASP.NET Eval 2.0数据绑定做了那些改进.

ASP.NET Eval 2.0 的数据绑定函数Eval()简化掉了ASP.NET Eval 1.1神秘的Container.DataItem,比如数据绑定表达式:

<%# Eval("ProductName") %>

那么,Page.Eval()又是如何知道"ProductName"是那个数据的属性呢,即Container.DataItem真的消失了吗?

ASP.NET Eval()是Page的父类TemplateControl的方法

TemplateControl.Eval()可以自动计算出Container, 机制就是从一个dataBindingContext:Stack堆栈来获取.

1. 建立DataItem Container 栈:

在Control.DataBind()中,建立,这样可以保证子控件的DataItem Container始终在栈顶.

{

protected virtual void DataBind(bool raiseOnDataBinding)

{

bool foundDataItem = false; if (this.IsBindingContainer)

{

object o = DataBinder.GetDataItem(this, out foundDataItem);

if (foundDataItem)

Page.PushDataItemContext(o); <-- 将DataItem压入堆栈

}

try

{

if (raiseOnDataBinding)

OnDataBinding(EventArgs.Empty);

DataBindChildren(); <-- 绑定子控件

}

finally

{

if (foundDataItem)

Page.PopDataItemContext(); <-- 将DataItem弹出堆栈

}

}

}
</div>
2. 获取DataItem Container

{

public object GetDataItem()

{

...

return this._dataBindingContext.Peek(); <-- 读取堆栈顶部的DataItem Container,就是正在绑定的DataItem Container

}

}
</div>
3. TemplateControl.Eval()

{

protected string Eval (string expression, string format)

{

return DataBinder.Eval (Page.GetDataItem(), expression, format);

}

}
</div>
结论:

从上面看出Page.Eval()在计算的时候还是引用了Container.DataItem,只不过这个DataItem通过DataItem Container堆栈自动计算出来的.我认为Page.Eval()看似把问题简化了,其实把问题搞得更加神秘.

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Asp.net中的数据绑定Eval和Bind应用示例
  • asp.net中eval不能定义变量的问题的解决方法
  • 深入理解Asp.net中DataBinder.Eval的用法总结
  • ASP.NET Eval进行数据绑定的方法
  • ASP.NET Eval 求值运算的一些用法
  • asp.net TemplateField模板中的Bind方法和Eval方法

相关文章

  • 2017-05-11ADO.NET无连接模式的详细介绍
  • 2017-05-11.NET获取客户端的操作系统版本、浏览器版本和IP地址
  • 2017-05-11ajaxToolkit:CalendarExtender演示与实现代码
  • 2018-08-20解决asp.net上传文件超过了最大请求长度的问题
  • 2017-05-11asp.net 通过httpModule计算页面的执行时间
  • 2017-05-11用CSS实现图片倾斜 只支持IE
  • 2017-05-11.NET下实现数字和字符相混合的验证码实例
  • 2017-05-11.Net 垃圾回收机制详细介绍
  • 2017-05-11让Sqlite脱离VC++ Runtime独立运行的方法
  • 2017-05-11ASP.NET 2.0中的页面输出缓存

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • asp.net 页面回跳实现代码
    • asp.net网站安全从小做起与防范小结
    • Asp.net清空控件值的方法(可自定义控件类型)
    • vs2012创建的ado.net模型无法实例化的解决方案
    • sql server中批量插入与更新两种解决方案分享(asp.net)
    • asp.net Repeater 数据绑定代码
    • asp.net 页面之间传递参数的几种方法
    • .net让线程支持超时的方法实例和线程在执行结束后销毁的方法
    • ASP.NET编程中的十大技巧
    • asp.net为网页动态添加关键词的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有