6.3 跨页传递信息
在将信息传递到其他页面的众多方法中,通过地址传递信息是一个非常有效,也非常便捷的方式。无论代码编写还是代码的分析,都是一个非常好的解决方法。
6.3.1 查询字符串
在通过地址栏传递参数时也有很多缺点,比如,不能传递对象,不能超过2K的长度等限制,但这个方法同视图状态相比要好很多,安全性要高于视图状态,可以传递一些一般敏感的信息,如用户名称、密码等信息。但是关键信息还是不能存储,比如,数据库的用户名称密码等高级别的信息。具体的操作方法代码如下。
这是个从定位的操作,从一个页面跳转到另外一个页面,并且将本页面文本框中的值传递到另外的一个页面中显示出来,执行效果如图6-5所示。
图6-5 开始页面
单击页面上的按钮可以将文本框中的值传递给目标页面,接受代码如下。
接收值后,显示出来效果如图6-6所示。
图6-6 目标页面显示效果
上面的例子演示了通过查询字符串来传递参数,其实这样的方法可以直接在地址栏看到,地址栏的参数显示如下。
http://localhost:34403/WebForm6.aspx?testquery=Hello%20Word
这个地址中就包含了参数名称和参数值,这里演示了通过地址栏,就是查询字符串来传递参数,其实在编译器提供的按钮控件中还有另外的方式传递参数。
6.3.2 跨页回送技术
在编译器提供的控件中,所有继承了IButtonControl接口的控件都将具有一个特殊的属性PostBackUrl,这个属性将指向一个从定位的页面,并且将本页的所有数据提交到目标页面,类似于查询字符串,但是这个属性更安全,且长度也可以达到一般的程序要求,下面通过代码来看具体操作,Html代码如下。
这里设定的目标页面为WebForm6.aspx。单击按钮时,页面将从当前页面转到目标页面,并且将本页的信息提交到目标页面,这样就自然完成了信息的跨页面传递过程。在传递过程中会用到一个关键的变量——PreviousPage,这个变量可以获得当前页面传递过来的所有对象。具体的使用代码如下。
在目标窗体获得提交页面的标题,然后输出到页面中,效果如图6-7所示。
图6-7 获得提交页面的数据
这里演示一个比较简单的示例,接下来演示较复杂的例子,就是获得文本框中的值,目标页面的代码如下。
代码执行效果如图6-8所示。
图6-8 获得其他控件中的值
这样的参数传递可以将页面上的对象全部传递过去,但都是通过提交的方式,而且通过服务器的方式传递。上面演示的是服务器端解决方案中的一部分,下面讲述服务器的客户端解决方案。