逍遥一派 发表于 2015-1-16 14:24:28

NET网页编程之Context.Handler 页面间传值办法

我以前很喜欢Serv-U,自从它用Java重写之后我就再也没用过,实在是太慢了,我宁可用IIS搭建FTP,虽然IIS搭建FTP在权限管理上很不灵活。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);
}
}
数据挖掘有点高深的,主要估计就是使用一些算法提取一些实用的数据。学好数据挖掘的话可以应聘baidu或者google,但是一般人家对算法的要求听高的。你最好还是学点应用型的吧。这种主要是研究型的。

冷月葬花魂 发表于 2015-1-18 14:03:59

由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。

admin 发表于 2015-1-26 11:45:25

当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。

因胸联盟 发表于 2015-2-4 17:50:20

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

只想知道 发表于 2015-2-10 05:19:39

大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。

简单生活 发表于 2015-2-28 21:55:24

ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。

小妖女 发表于 2015-3-10 08:41:59

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

变相怪杰 发表于 2015-3-17 06:10:20

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

若相依 发表于 2015-3-23 23:17:29

CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。
页: [1]
查看完整版本: NET网页编程之Context.Handler 页面间传值办法