马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
完全不一样的。.net其实我也说不太清,.net可以把他理解为跟J2EE相对的工具。c++主要做系统相关的开发你要学.net的话就应该学C#。(其实微软在.NET平台上也考虑了给C++留一个地位。网页尺度HTML表单(form元素)同意你向别的一个页面大概使用程序传送和发送数据信息,办法是利用表单位素。在ASP.NET1.x中,网页则使用送达机制,把页面数据提交给该页自己。关于ASP.NET2.0,它的功效有所扩大,可以同意跨页提交。这周就让我们来切磋这个新特征。
传统举措
为了便于对照,我想花一分钟往返顾网页传送数据的老办法。HTML的表格元素有一个action(举措)属性,用来指定服务器端哪项资本(所谓资本,是指一个网页、一段剧本、程序等)来处置这些提交的数据。上面的代码即是一个样例。
<html>
<head><title>SampleHTMLform</title></head>
<body>
<formname="frmSample"method="post"action="target_url">
<inputtype="text"name="fullname"id="fullname"/>
<inputtype="button"name="Submit"value="submit"/>
</form>
</body></html>
在文本域(名字是fullname)中输出的值将被提交给表单位素的action属性指定的页面大概程序。关于ASP.NET开辟者,即便已经用过尺度HTML表单,也是极未几见的。
ASP.NET开辟者面临要从一个网页向另外一个网页传送数据信息的义务时,办法选择的余地是非常宽广的。它们包含会话变量(sessionvariables)、cookies、querystring变量、caching(网页缓存),乃至Server.Transfer办法,可是ASP.NET2.0还供应了别的一种选择。
ASP.NET2.0供应的又一举措
在计划ASP.NET2.0的时分,微软熟悉到了在网页间交织传送数据的需求。有了这个认识以后,就为ASP.NET的button(按钮)控件增添了一项PostBackUrl属性。它同意你在用户提交的时分,指明这张表单和下面的数据送往何方(也就是由PostBackUrl属性指定的URL值断定)。一样平常来说,跨页传送是客户端在背景利用JavaScript举行传送的历程。 - <%@Pagelanguage="vb"%>
- <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
- <html><head>
- <title>CrossPostbackExample</title>
- </head><body>
- <formid="frmCrossPostback1"method="post"runat="server">
- <asp:LabelID="lblName"runat="server"Text="Name:"></asp:Label>
- <asp:TextBoxID="txtName"runat="server"></asp:TextBox><br/>
- <asp:LabelID="lblE-mailAddress"runat="server"Text="E-mail:"></asp:Label>
- <asp:TextBoxID="txtE-mailAddress"runat="server"></asp:TextBox><br/>
- <asp:ButtonID="btnSubmit"runat="server"Text="Submit"PostBackUrl="CrossPostback2.aspx"/>
- </form></body></html>
复制代码中的ASP.NET页面具有两个文本域(分离暗示name(名字)和e-mail(电子邮件)),和一个用来提交数据的button(按钮)。这个提交按钮的PostBackUrl属性被指定为别的一个网页,如许使得表单提交的时分,数据能够发送到谁人页面。注重:这个例子中,表单位素经由过程设置method(办法)属性,让表单提交时接纳post[2]提交体例,但这不是需要的,由于一切crosspostback(跨页送达)依据计划均利用post办法。
利用先前页面
ASP.NET页面经过跨页送达的挪用而载进的时分,它下面的工具的IsPostBack属性不会被触发。不外,有一项叫做PreviousPage(前一页)的属性使你可以会见和利用那些使用跨页送达的页面。
每当一个跨页哀求产生时,以后页的PreviousPage属性就把促发送达的页面援用保留上去。假如页面的发生不是来自跨页送达的引发,大概说页面处于分歧的程序组,那末PreviousPage属性将不会被初始化。
你能够经由过程反省PreviousPage工具来断定页面的载进是不是为跨页送达的了局。值假如为null,则申明是一般的载进,而非null值则标明网页来自跨页送达。别的,页面类(Pageclass)还包括了一个称作IsCrossPagePostBack的办法(method),专门用来断定页面是否是跨页送达的了局。
一旦断定产生了跨页送达,你就能够经由过程PreviousPage工具的FindControl办法往会见挪用页(callingpage)上的控件。上面的代码是我们例子中的第二页;它由后面列出的页面所挪用。 - <%@Pagelanguage="vb"%>
- <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
- <html><head>
- <title>CrossPostbackExample2</title>
- </head><body>
- <scriptlanguage="vb"runat="server">
- SubPage_Load()
- IfNot(Page.PreviousPageIsNothing)Then
- IfNot(Page.IsCrossPagePostBack)Then
- Response.Write("Name:"+CType(PreviousPage.FindControl("txtName"),TextBox).Text+"<BR>")
- Response.Write("E-mail:"+CType(PreviousPage.FindControl("txtE-mailAddress"),TextBox).Text+"<BR>")
- EndIf
- EndIf
- EndSub
- </script></body></html>
复制代码这个页先判别它是否是由跨页送达所挪用。假如是,就经由过程FindControl办法会见来自挪用页的数值,并把用此办法失掉的控件转换为TextBox控件,然后显现它们的Text(文本)属性的内容。
你能够把全部PreviousPage工具转换成触发跨页送达的页面范例。这个办法同意你会见页面的全局属性(publicproperties)和办法。在我给出这项手艺的实例之前,我有需要重写第一个例子,包括进一些全局属性。上面代码是增加了两个属性的第一个清单,这两个属性用于会见域值。 - <%@Pagelanguage="vb"%>
- <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
- <html><head>
- <title>CrossPostbackExample</title>
- <scriptlanguage="vb"runat="server">
- PublicReadOnlyPropertyName
- Get
- ReturnMe.txtName.Text
- EndGet
- EndProperty
- PublicReadOnlyPropertyE-mailAddress
- Get
- ReturnMe.txtE-mailAddress.Text
- EndGet
- EndProperty
- </script></head><body>
- <formid="frmCrossPostback1"method="post"runat="server">
- <asp:LabelID="lblName"runat="server"Text="Name:"></asp:Label>
- <asp:TextBoxID="txtName"runat="server"></asp:TextBox><br/>
- <asp:LabelID="lblE-mailAddress"runat="server"Text="E-mail:"></asp:Label>
- <asp:TextBoxID="txtE-mailAddress"runat="server"></asp:TextBox><br/>
- <asp:ButtonID="btnSubmit"runat="server"Text="Submit"PostBackUrl="CrossPostback2.aspx"/>
- </form></body></html>
复制代码既然如今属性已建好,那你就可以很简单会见它们。要小心的是,Page类的PreviousPage工具必需转换成准确的范例,如许才干准确会见它的属性。这能够经由过程把它转换成符合的page种别的工具加以完成。 - <%@Pagelanguage="vb"%>
- <%@ReferencePage="~/CrossPostback1.aspx"%>
- <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
- <html><head>
- <title>CrossPostbackExample3</title>
- </head><body>
- <scriptlanguage="vb"runat="server">
- SubPage_Load()
- DimcppPageAsCrossPostback1_aspx
- IfNot(Page.PreviousPageIsNothing)Then
- IfNot(Page.IsCrossPagePostBack)Then
- If(Page.PreviousPage.IsValid)Then
- cppPage=CType(PreviousPage,CrossPostBack1_aspx)
- Response.Write("Name:"+cppPage.Name+"<br>")
- Response.Write("E-mail:"+cppPage.E-mailAddress)
- EndIf
- EndIf
- EndIf
- EndSub
- </script></body></html>
复制代码申明了这一点,它在页面头部界说了挪用页的一项援用,那样这个援用范例就可以在代码中利用。经由过程这项援用,实践的VB.NET代码利用CType函数把PreviousPage工具转换成了得当的范例。这以后,那些属性就能够像代码树模的那样利用了。
关于上述清单中PreviousPage工具IsValid办法的利用在此提示一下:前页的IsValid属性包管你对它操纵之前,它已经由过程一切正当考证测试。
总结
在网页间传送数据参数有良多项使用,包含坚持团体用户信息。家传的网页办理计划,像利用querystring和cookies,同意你很简单当提交产生时从一个页面指向另外一个页面。
ASP.NET1.1除供应分外办法外,对这些办法也能很好地撑持,但是,ASP.NET2.0依托跨页送达,使这方面又有了长足开展。它让一个网页处置来自另外一网页的数据变得复杂。在你开辟你的下一个ASP.NET2.0程序的时分,可要好好使用这个新观点的上风啊。
简单的说:.net只有微软一家在做的,微软也不允许别人跟他做相同的工具,所以他就把需要的工具全部封装在.net的平台上了;而java是公开了。 |