ASP.NET网页设计浅谈.NET中的数据绑定表达式仓酷云
一般的指的.net就是跟net网页编程相对的那种,主要是做企业级应用的。你如果想学这个,主要就是学C#和数据库。(ASP.NET好像很重要的,应该也要学的,ASP.NET上好像可以结合VB和C#等多种语言,但是微软主推C#)数据绑定表达式必需包括在<%#和%>字符之间。格局以下:<br><tagprefix:tagnameproperty="<%#data-bindingexpression%>"runat="server"/>
大概以下:此时只必要把属性DataSource="<%#数组名%>"。
4,能够是一个表达式
比方:Person是一个对象,Name和City是它的2个属性,则数据绑定表达式能够如许写:
<%#(Person.Name+""+Person.City)%>。
5,能够是一个办法
比方:<%#GetUserName()%>。GetUserName()是一个已界说的C#办法,一样平常请求有前往值。
6,能够是用Eval,DateBind.Eval获得的数据表的字段,这个是最多见的了,不再举例。
注重:假如数据绑定表达式作为属性的值,只需数据绑定表达式中没有呈现双引号,那末<%#数据绑定表达式%>的最外层用双引号大概单引号都能够。假如数据绑定表达式中呈现双引号,则<%#数据绑定表达式%>的最外层最好要用单引号。
与数据库有关的数据绑定表达式的经常使用办法?
1,<%#DataBind.Eval(Container.DataItem,"字段名")%>
<%#DataBind.Eval(Container.DataItem,"字段名","{0:c}")%>
另有2种不经常使用的:
<%#DataBinder.Eval(Container,"DataItem.字段名")%>
<%#DataBinder.Eval(Container,"DataItem.字段名",{0:c})%>
Container.DataItem相称于数据库中某个表中的一行纪录,而一行能够有良多列。
最初一个参数和String.Format的情势一样。比方c代表泉币,p代表百分号,d代表短日期格局显现,f代表浮点数实际,f3代表小数点后三为,一次类推。
利用三目运算符?:的例子:
<%#DataBinder.Eval(Container.DataItem,"字段名").ToString().Trim().Length>16?DataBinder.Eval(Container.DataItem,"字段名").ToString().Trim().Substring(0,16):DataBinder.Eval(Container.DataItem,"字段名").ToString().Trim()%>
2,<%#Eval("字段名")%>
<%#Eval("字段名","{0:c}")%>
.NET2.0新呈现的一个办法。和DataBind.Eval()等价。
最初一个参数和String.Format的情势一样。比方c代表泉币,p代表百分号,d代表短日期格局显现,f代表浮点数实际,f3代表小数点后三位,一次类推。
利用三目运算符的例子:
<%#(Eval("性别")).ToString()=="True"?"男":"女"%>
性别字段范例为:是/否(Access),bit(sqlserver)
利用办法挪用的例子:
<%#GetUserPhoto(Eval("PhotoPath"))%>
GetUserPhoto()的界说:
3,<%#((DataRowView)Container.DataItem)["字段名"]%>
<%#string.Format("{0:c}",((DataRowView)Container.DataItem)["字段名"])%>
用String.Format办法设定字段的显现款式。比方c代表泉币,p代表百分号,d代表短日期格局显现,f代表浮点数实际,f3代表小数点后三为,一次类推。
范例转换例子:<%#(int)((DataRowView)Container.DataItem)["字段名1"]*(int)((DataRowView)Container.DataItem)["字段名2"]%>意义是2个字段相乘。
下面三种绑定办法的效力:Eval办法实行时分会挪用DataBinder.Eval办法,DataBinder.Eval办法在运转时利用反射实行前期绑定盘算,会招致功能分明下落。以是会招致功能分明下落。以是三者中<%#((DataRowView)Container.DataItem)["字段名"]%>的功能最好。
<br><%#data-bindingexpression%>
ASP.NET撑持分层数据绑定模子,数据绑定表达式利用Eval和Bind办法将数据绑定到控件,并将变动提交回数据库。
Eval办法是静态单向(只读)办法,以是Eval函数用于单向(只读)绑定,该办法接纳数据字段的值作为参数并将其作为字符串前往。
Bind办法撑持读/写功效,以是Bind函数用于双向(可更新)绑定。该办法能够检索数据绑定控件的值并将任何变动提交回数据库。
XPath办法撑持对XML范例的数据源供应撑持。
数据绑定表达式都能够呈现在页面的哪一个地位呢?
一,能够将数据绑定表达式包括在服务器控件大概一般的html元素的入手下手标志中属性名/属性值对的值侧。比方:
<br><asp:TextBoxID="TextBox1"runat="server"Text="<%#数据绑定表达式%>"></asp:TextBox><br/>注重条目:此时数据的绑顶表达式能够是一个变量,也能够是一个带前往值的C#大概VB.NET办法,还能够是某个控件的某个属性的值,也能够是C#大概VB.NET对象的某个字段大概属性的值等等。固然也能够间接就是一个字符串,比方"hello"。
假如此时的数据绑定表达式是Eval("数据库中某个表的某个字段")等,那末必需把TextBox1放在某个轮回显现的控件的模板中才准确,不然会提醒:Eval()、XPath()和Bind()这类数据绑定办法只能在数据绑定控件的高低文中利用。实在就是想让你把TextBox1放在像Repeater,DataList,GridView如许的控件的模板中。
二,数据绑定绑定表达式包括在在页面中的任何地位。比方:
<br><formid="form1"runat="server">
<br><div>
<%#Eval("数据绑定表达式1")%>
<%#Eval("数据绑定表达式2")%>
<br></div>
<br></form>一样遵守"一"的注重条目。
假如此时的数据绑定表达式是Eval("数据库中某个表的某个字段")等,那末必需把<%#Eval("数据绑定表达式1")%><%#Eval("数据绑定表达式2")%>放在像Repeater,DataList,GridView如许的控件的模板中。
三,能够将数据绑定表达式包括在Javascript代码中,从而完成在Javascript中挪用C#大概VB.NET的办法。比方:
Deafult2.aspx:
<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default2.aspx.cs"Inherits="Default2"%>
<br><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<br><htmlxmlns="http://www.w3.org/1999/xhtml">
<br><headrunat="server">
<br><title>无题目页</title>
<scriptlanguage="javascript"type="text/javascript">
functionGetStr()
{
vara;
a="";
a="<%#CSharpToJavascript()%>"//挪用c#的办法
alert(a);
}
</script>
<br></head>
<br><body>
<br><formid="form1"runat="server">
<br><div>
<br><inputid="Button1"type="button"value="Javascript挪用c#的办法!"onclick="GetStr()"/</div>
<br></form>
<br></body>
<br></html>
<br>Default2.cs:
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Collections;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
publicpartialclassDefault2:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
Page.DataBind();//办法有前往值的要先绑定,才干完成Javascript挪用c#的办法!
}
publicstringCSharpToJavascript()
{
return"Javascript挪用c#的办法!";
}
}数据绑定表达式都能够是甚么范例呢?
1,能够是一个变量
比方:<asp:LabelID="Label1"runat="server"Text="<%#变量名%>"></asp:Label>
2,能够是服务器控件的属性值
比方:<asp:LabelID="Label1"runat="server"Text="<%#TextBox2.Text%>"></asp:Label>
3,能够是一个数组等汇合对象
比方把一个数组绑定到列表控件,比方ListBox等,大概Repeater,DataList,GridView如许的控件等,
stringGetUserPhoto(objectphotoPath)
{
if(photoPath==DBNull.Value)<%#((DataRowView)Container.DataItem)["字段名"]%>
{
return"";
}
}来自:http://www.ckuyun.com/terryli/archive/2008/03/25/1120482.html
语言是不是不是最重要的? 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。 市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。 主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。 提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。 ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。 在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗? ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。 能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。 以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。 碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。 ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。 ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。 ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。 CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。 目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案. PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。 市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。
页:
[1]