海妖 发表于 2015-1-16 14:25:55

NET网页编程之ASP.NET Eval怎样举行数据绑定

捆绑编译器。用户不需要受制于厂家,自己就能将程序在新平台上编译运行。除了牛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可以用来做大规模的应用服务。

活着的死人 发表于 2015-2-27 13:20:37

业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。

老尸 发表于 2015-3-16 21:45:32

但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。

因胸联盟 发表于 2015-3-23 05:21:54

Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!
页: [1]
查看完整版本: NET网页编程之ASP.NET Eval怎样举行数据绑定