仓酷云

标题: NET网页编程之Context.Handler 页面间传值办法 [打印本页]

作者: 逍遥一派    时间: 2015-1-16 14:24
标题: 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
由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。
作者: admin    时间: 2015-1-26 11:45
当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。
作者: 因胸联盟    时间: 2015-2-4 17:50
通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。
作者: 只想知道    时间: 2015-2-10 05:19
大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。
作者: 简单生活    时间: 2015-2-28 21:55
ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。
作者: 小妖女    时间: 2015-3-10 08:41
Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。
作者: 变相怪杰    时间: 2015-3-17 06:10
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
作者: 若相依    时间: 2015-3-23 23:17
CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2