仓酷云

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

[学习教程] ASP.NET网页设计ASP.NET当即上手教程(8)

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-16 22:30:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
听03很多师兄说主讲老师杭城方讲课很差就连旁听也没有去了)Asp.net引进了一种新的声明数据绑定的语法。这类极为天真的语法同意开辟者不但绑定命据源,并且能够绑定复杂的属性、汇合、表达式、乃至是挪用办法所前往的了局。上面的列表显现了这类新语法的一些例子:
复杂属性
Customer:<%#custID%>
汇合
Orders:<asp:ListBoxid="List1"datasource=<%#
myArray%>runat="server">
表达式
Contact:<%#(customer.FirstName+""+customer.LastName
)%>
办法了局
OutstandingBalance:<%#GetBalance(custID)%>
只管这类语法看上往和asp中Response.Write的简写体例<%=%>很相似,但他们的运转机理却年夜不不异。Response.Write的简写语法在页面处置的时分求值,而asp.net数据绑定语法只要当挪用DataBind办法的时分才求值。
DataBind是Page和一切服务器控件的一个办法。当你对一个父控件挪用DataBind办法的时分,他所包括的子控件城市挪用DataBind办法。好比实行DataList1.DataBind(),DataList模板中的一切控件都援用了DataBind办法。在Page挪用DataBind办法---Page.DataBind()大概复杂的DataBind()---招致页面上一切的数据绑定表达式城市被求值。DataBind常常在Page_Load事务中被挪用,好比上面的例子:
protectedvoidPage_Load(ObjectSrc,EventArgsE){
DataBind();
}
你几近能够在.aspx页面中声明部分的任何中央利用数据绑定表达式,在运转时供应它所盘算的预期的数据范例。当求值今后,复杂的属性、表达式和上例中的办法,将向用户显现文本。在这些情形下,数据绑定表达式必需求出一个string范例的值。在汇合的例子中,数据绑定表达式所求值的范例,关于ListBox的DataSource属性来讲是无效的。你会发明,在数据绑定表达式中为了失掉希冀的了局,强迫转换了局值的范例,是很有需要的。比方,假如count是一个整数:
NumberofRecords:<%#count.ToString()%>
绑定复杂属性
Asp.net数据绑定语法撑持绑定页面的大众变量和属性,和页面上其他控件的属性。
上面的例子申明了绑定到页面的大众变量和复杂属性。注重这些值在挪用DataBind()之前已被初始化。
绑定汇合和列表
列表服务器控件,如DataGrid、ListBox和HTMLSelect,利用汇合作为数据源。上面的例子申明绑定到经常使用的CLR汇合范例。这些控件只能绑定到撑持IEnumerable,ICollection,或IListSource接口的汇合。一般,您能够绑定到ArrayList、Hashtable、DataView和DataReader.
良多时分,在绑定到页面或把持之前,你大概会操纵这些数据。

DataBinder.Eval办法
Asp.net框架供应了一个静态办法DataBinder.Eval,能够盘算前期数据绑定表达式的值,并能够将了局恣意格局化为字符串。DataBinder.Eval是很便利的,他扫除了很多开辟职员必需作的(经由过程强迫改动值的范例来失掉预期的数据范例)显式转换。特别是在带有模板列表的数据绑定控件中,由于常常必要显式转换数据行和数据字段,以是它出格有效。
细心看上面的代码,整数将被显现为泉币型字符串。利用尺度的asp.net数据绑定语法,为了失掉数据字段IntegerValue,你必需起首显式转换数据行的范例,然后作为String.Format办法的参数才干失掉了局
<%#String.Format("{0:c}",((DataRowView)Container.DataItem)["IntegerValue"])%>
如许的语法其实扑朔迷离的难以影象。对照而言,DataBinder.Eval就很复杂了。它带有三个参数:数据项的定名容器、数据字段称号和格局化字符串。在模板列表如DataList、DataGrid、或Repeater,定名容器老是Container.DataItem。Page是另外一个能够被DataBinder.Eval利用的定名容器。
<%#DataBinder.Eval(Container.DataItem,"IntegerValue","{0:c}")%>
格局化字符串参数是可选的。假如疏忽参数,DataBinder.Eval前往工具范例的值,就象上面的代码如许:
<%#(bool)DataBinder.Eval(Container.DataItem,"BoolValue")%>
很主要的一点必要注重:因为受前期绑定影响,DataBinder.Eval与尺度的数据绑定语法比拟,在实行效力上有分明的不同。因而有选择地利用DataBinder.Eval,出格是不必要对字符串举行格局化的时分。

刚刚打开这篇专题,猛然见到HAL9000发表的《对于大型公司项目平台选择j2ee的几层认识》系列,深受启发。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-19 15:56:18 | 只看该作者
关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。
小女巫 该用户已被删除
板凳
发表于 2015-1-26 23:54:17 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。
金色的骷髅 该用户已被删除
地板
发表于 2015-2-5 00:53:38 | 只看该作者
可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。
山那边是海 该用户已被删除
5#
发表于 2015-2-11 00:18:54 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
admin 该用户已被删除
6#
发表于 2015-3-1 19:07:11 | 只看该作者
JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。
飘灵儿 该用户已被删除
7#
发表于 2015-3-10 22:15:10 | 只看该作者
大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。
再见西城 该用户已被删除
8#
发表于 2015-3-17 11:11:03 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
只想知道 该用户已被删除
9#
发表于 2015-3-24 08:56:38 | 只看该作者
我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 04:13

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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