仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 579|回复: 6
打印 上一主题 下一主题

[学习教程] NET网页编程之ASP.NET Eval怎样举行数据绑定

[复制链接]
海妖 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:25:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
捆绑编译器。用户不需要受制于厂家,自己就能将程序在新平台上编译运行。除了牛B轰轰的linux,估计也没有系统捆绑c/c++的编译器,而且许多新平台都无法支持复杂的c/c++编译器在上面直接运行。<p>ASP.NETEval在数据绑定方面的使用是尽人皆知的,不外手艺在开展,当ASP.NETEval1.1酿成ASP.NETEval2.0的时分,在操纵的时分会有甚么变更呢?
假定你已懂得ASP.NETEval1.1的数据绑定(出格是Container这个部分变量)的机制,这里次要剖析ASP.NETEval2.0数据绑定做了那些改善。
ASP.NETEval2.0的数据绑定函数Eval()简化失落了ASP.NETEval1.1奥秘的Container.DataItem,好比数据绑定表达式:
<OLclass=dp-c><%#(Container.DataItemasDataRowView)["ProductName"].ToString()%>
ASP.NETEval1.1简化为:(往失落了范例指定,Eval经由过程反射完成,本文不再论述)
<OLclass=dp-c><%#DataBinder.Eval(Container.DataItem,"ProductName").ToString()%>
ASP.NETEval2.0又简化为,往失落了Container部分变量:
<OLclass=dp-c><%#Eval("ProductName")%>
那末,Page.Eval()又是怎样晓得"ProductName"是谁人数据的属性呢,即Container.DataItem真的消散了吗?
ASP.NETEval()是Page的父类TemplateControl的办法
TemplateControl.Eval()能够主动盘算出Container,机制就是从一个dataBindingContext:Stack仓库来猎取。
1.创建DataItemContainer栈:
在Control.DataBind()中,创建,如许能够包管子控件的DataItemContainer一直在栈顶。
<OLclass=dp-c>publicclassControl{ protectedvirtualvoidDataBind(boolraiseOnDataBinding) {boolfoundDataItem=false;if(this.IsBindingContainer){ objecto=DataBinder.GetDataItem(this,outfoundDataItem); if(foundDataItem)Page.PushDataItemContext(o);<--将DataItem压进仓库}try{ if(raiseOnDataBinding)OnDataBinding(EventArgs.Empty); DataBindChildren();<--绑定子控件}finally{ if(foundDataItem)Page.PopDataItemContext();<--将DataItem弹出仓库} }}
2.猎取DataItemContainer
<OLclass=dp-c>publicclassPage{ publicobjectGetDataItem() {...returnthis._dataBindingContext.Peek();<--读取仓库顶部的DataItemContainer,就是正在绑定的DataItem Container }}
3.TemplateControl.Eval()
<OLclass=dp-c>publicclassTemplateControl{ protectedstringEval(stringexpression,stringformat) {returnDataBinder.Eval(Page.GetDataItem(),expression,format); }}
结论:
从下面看出Page.Eval()在盘算的时分仍是援用了Container.DataItem,只不外这个DataItem经由过程DataItemContainer仓库主动盘算出来的。我以为Page.Eval()看似把成绩简化了,实在把成绩弄得加倍奥秘。
<p>呵呵,那你就关注微软的招聘信息以及别人的招聘经验啊,还有也不一定去做技术的,你如果真的想去就多了解了解。(其实我的意思是说想到微软做技术是很不容易的。
小妖女 该用户已被删除
沙发
发表于 2015-1-18 14:31:01 | 只看该作者
大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。
若相依 该用户已被删除
板凳
发表于 2015-1-25 21:27:25 | 只看该作者
微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。
兰色精灵 该用户已被删除
地板
发表于 2015-2-9 17:33:06 | 只看该作者
Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。
活着的死人 该用户已被删除
5#
发表于 2015-2-27 13:20:37 | 只看该作者
业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
老尸 该用户已被删除
6#
发表于 2015-3-16 21:45:32 | 只看该作者
但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。
因胸联盟 该用户已被删除
7#
发表于 2015-3-23 05:21:54 | 只看该作者
Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-16 06:13

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表