山那边是海 发表于 2015-1-16 14:28:09

来一篇关于NET的ASP.NET中页面传值体例

有个问题想请教你一下,呵呵:)你觉得将来学什么方向比较好,我真是想不出来,知道的太少了,麻烦了。1、今朝在ASP.NET中页面传值共有这么几种体例:
1、表单提交,
<formaction="target.aspx"method="post"name="form1">
<inputname="param1"value="1111"/>
<inputname="param2"value="2222"/>
</form>
....
form1.submit();
....
此种方在ASP。NET中有效,由于ASP。NET的表单老是提交到本身页面,假如要提交到别一页面,必要特别处置。
2、<Ahref="target.aspx?param1=1111?m2=2222">链接地点传送</A>
吸收页面:stringstr=Request["param1"]
3、Session共享
发送页面:Session("param1")="1111";
按收页面stringstr=Session("param1").ToString();
4、Application共享
发送页面:Application("param1")="1111";
按收页面:stringstr=Application("param1").ToString();
此种办法不常利用,由于Application在一个使用程序域局限共享,一切用户能够改动及设置其值,故只使用计数器等必要全局变量的中央。
5、Cookie
6、Response.Redirect()体例
Response.Redirect("target.aspx?param1=1111?m2=2222")
吸收页面:stringstr=Request["param1"]
7、Server.Transfer()体例。
Server.Transfer("target.aspx?param1=1111?m2=2222")
吸收页面:stringstr=Request["param1"]
2、假如在两个页面间必要大批的参数要传传送,如数据查询等页面时,用1-6的办法传值及其方便,而第7种办法确有一共同的上风!但利用该办法时必要必定的设置,现复杂先容一下该办法的利用体例:
以查询数据页面为例:
在查询页面中设置以下私有属性(QueryPage.aspx):publicclassQueryPage:System.Web.UI.Page
{
protectedSystem.Web.UI.WebControls.TextBoxtxtStaDate;
protectedSystem.Web.UI.WebControls.TextBoxtxtEndDate;
/**//**//**////<summary>
///入手下手工夫
///</summary>
publicstringStaDate
{
get{returnthis.txtStaDate.Text;}
set{this.txtStaDate.Text=value;}
}
/**//**//**////<summary>
///停止工夫
///</summary>
publicstringEndDate
{
get{returnthis.txtEndDate.Text;}
set{this.txtEndDate.Text=value;}
}
privatevoidbtnEnter_Click(objectsender,System.EventArgse)
{
Server.Transfer("ResultPage.aspx");//注重:利用ResultPage.aspx来吸收传送过去的参数
}
}
在显现查询了局页面(ResultPage.aspx):
publicclassResultPage:System.Web.UI.Page
{
privatevoidPage_Load(objectsender,System.EventArgse)
{
//转换一下便可取得前一页面中输出的数据
QueryPagequeryPage=(QueryPage)Context.Handler;//注重:援用页面句柄
Response.Write("StaDate:");
Response.Write(queryPage.StaDate);
Response.Write("<br/>EndDate:");
Response.Write(queryPage.EndDate);
}
}
3、假如有很多查询页面共用一个了局页面的设置办法:
在这类体例中关头在于“QueryPagequeryPage=(QueryPage)Context.Handler;”的转换,只要转换不依附于特定的页面时便可完成。
假如让一切的查询页面都承继一个接口,在该接口中界说一个办法,该办法的独一感化就是让了局页面取得构建了局时所需的参数,便可完成多页面共享一个了局页面操纵!
1、先界说一个类,用该类安排一切查询参数:(*.cs)/**////<summary>
///了局页面中要用到的值
///</summary>
publicclassQueryParams
{
privatestringstaDate;
privatestringendDate;
/**//**//**////<summary>
///入手下手工夫
///</summary>
publicstringStaDate
{
get{returnthis.staDate;}
set{this.staDate=value;}
}
/**//**//**////<summary>
///停止工夫
///</summary>
publicstringEndDate
{
get{returnthis.endDate;}
set{this.endDate=value;}
}
}
2、接口界说:
/**////<summary>
///界说查询接口。
///</summary>
publicinterfaceIQueryParams
{
/**//**//**////<summary>
///参数
///</summary>
QueryParamsParameters{get;}
}
3、查询页面承继IQueryParams接口(QueryPage.aspx):
/**////<summary>
///查询页面,承继接口
///</summary>
publicclassQueryPage:System.Web.UI.Page,IQueryParams
{
protectedSystem.Web.UI.WebControls.TextBoxtxtStaDate;
protectedSystem.Web.UI.WebControls.TextBoxtxtEndDate;
privateQueryParamsqueryParams;
/**//**//**////<summary>
///了局页面用到的参数
///</summary>
publicQueryParamsParameters
{
get
{
returnqueryParams;
}
}
privatevoidbtnEnter_Click(objectsender,System.EventArgse)
{
//赋值
queryParams=newQueryParams();
queryParams.StaDate=this.txtStaDate.Text;
queryParams.EndDate=this.txtEndDate.Text
Server.Transfer("ResultPage.aspx");
}
}
4、别外的页面也云云设置
5、吸收页面(ResultPage.aspx):publicclassResultPage:System.Web.UI.Page
{
privatevoidPage_Load(objectsender,System.EventArgse)
{
QueryParamsqueryParams=newQueryParams();
IQueryParamsqueryInterface;
//完成该接口的页面
if(Context.HandlerisIQueryParams)
{
queryInterface=(IQueryParams)Context.Handler;
queryParams=queryInterface.Parameters;
}
Response.Write("StaDate:");
Response.Write(queryParams.StaDate);
Response.Write("<br/>EndDate:");
Response.Write(queryParams.EndDate);
}
}
3、本文原因:
因在事情中要作一个数据查询,参数烦多,本来是用Session传送,用完该Session传来的参数后,还需清算Session,在用Session之前还得判别该Session是不是存在,极为啰嗦,我想应当另有更烦琐的办法来完成页面间的参数传送,故上彀查找,终究找到如许一种体例来完成页面间的参数传送。
有不到的地方,请人人斧正!
==================================================================================
起首来看HttpContext类:
System.Web.HttpContext类承继自System.Object,按类名来了解,便是Http高低文类.
此类封装了有关单个HTTP哀求的一切HTTP特定的信息。此类为承继IHttpModule和IHttpHandler接口的类供应了对以后HTTP哀求的HttpContext工具的援用。该工具供应对哀求的外部Request、Response和Server工具的会见。
HttpContext类的经常使用大众属性有:
Application,为以后HTTP哀求猎取HttpApplicationState工具。
Current,为以后HTTP哀求猎取HttpContext工具。
Handler,为以后HTTP哀求猎取或设置IHttpHandler工具。
Items,猎取可用于在HTTP哀求过程当中在IHttpModule和IHttpHandler之间构造和共享数据的键值汇合。
Request,为以后HTTP哀求猎取HttpRequest工具。
Response,为以后HTTP呼应猎取HttpResponse工具。
Server,猎取供应用于处置Web哀求的办法的HttpServerUtility工具。
Session,为以后HTTP哀求猎取HttpSessionState实例。
经由过程Page类的Context属性能够取得以后的System.Web.HttpContext工具
<p>接着来看Server.Transer()办法:
经由过程Page类的Server属性类能够Transfer到另外一个页面,如Server.Transfer("NewPage.aspx"),能够跳转到新页面中,
利用Server.Transfer()跳转页面,客户真个URL其实不会改动,只是在服务器端实行新页并输入,因而能够在新页面中经由过程猎取来取得哀求页面传送的工具和表双数据及查询字符串.
假定以后页面为FormerPage.aspx(类名为FormerPage),跳转到的新页面为NewPage.aspx
从FormerPage.aspx跳转的代码以下:
privatevoidbtnToNewPage_Click(objectsender,System.EventArgse)
{
ArrayListlist=newArrayList(3);
list.Add("Thislist");
list.Add("isfor");
list.Add("FormerPagetosee.");
Context.Items["FormerPageList1"]=list;
Server.Transfer("NewPage.aspx");
}
在新页面(NewPage.aspx)Page_Load()事务中经由过程以下代码取得传送的数据:
if(!IsPostBack)
{
try
{
FormerPageformer=(FormerPage)Context.Handler;
txtFromParentPage.Text=former.ClassName;//猎取FormerPage中界说的ClassName大众属性
//猎取在FormerPage中的高低笔墨典中增加的ArrayList:Context.Items["FormerPageList1"]
//猎取Contex字典项并强迫转换范例:
Array我觉得很重要,一般所说的不重要应该指的是:你学好一种以后再学另一种就很容易了。(因为这样大家可能有一个错觉就是语言不是很重要,只要随便学一种就可以了,其实不是这样的。

仓酷云 发表于 2015-1-18 14:45:42

以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。

简单生活 发表于 2015-1-23 20:03:46

通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。

海妖 发表于 2015-1-31 20:30:01

Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。

兰色精灵 发表于 2015-2-7 00:34:28

微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。

若天明 发表于 2015-2-19 07:27:38

碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。

飘飘悠悠 发表于 2015-3-6 14:15:55

如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。

冷月葬花魂 发表于 2015-3-13 03:09:27

但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。

变相怪杰 发表于 2015-3-20 11:08:22

PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。
页: [1]
查看完整版本: 来一篇关于NET的ASP.NET中页面传值体例