前边三篇介绍如何调用页面,也就是,从一个页面重定向到另一个页面。既然我们要从一个页面定向到另一个页面,那么自然就涉及传值问题。下面介绍页面传值。
如果您的应用程序从一个 ASP.NET 网页重定向(导航)到另一个 ASP.NET 网页,您经常希望将信息从源页传递到目标页。例如,您可能具有一个页面,用户可以从中选择要购买的商品。当用户提交该页时,您希望调用其他页,以处理用户输入的信息。
可以采用各种方式在页之间传递信息,某些方式取决于重定向的方式。包括以下选项:
- 使用查询字符串,该字符串可将信息追加到目标页的 URL 上。使用 HyperLink 控件将导航内置于页中时,或使用 Redirect 方法以编程方式重定向到其他页时,都可以使用查询字符串。 即使这些页不在同一个 Web 应用程序中,也能使用查询字符串传递值;如果要将信息传递到非 ASP.NET 网页的页中,也可以采取这种方式。如果目标页是一个 ASP.NET 网页,则可从 HttpRequest 对象的 QueryString 属性中读取查询字符串的值。
说明 :永远不要使用查询字符串传递敏感数据,因为查询字符串中的信息对用户是可见的,而且很容易被修改,因此会带来潜在的安全风险。
- 使用会话状态可以存储信息,随后可从当前应用程序的所有 ASP.NET 网页中访问这些信息。但是,这种方法会占用服务器内存,并且其信息将在会话过期之前一直存储在内存中,因而与直接向下一页传递信息相比,其系统开销更大。
- 在目标页,直接读取源页中的控件值和公共属性值。此策略适用于以下两种情况:当源页跨页发送到目标页时,以及调用 Transfer 方法在服务器上将执行从源页转到目标页时。
前两点很简单,也很常用,本篇介绍第三点。
从源页获取公共属性值
如果源页专门设计为与目标页共享信息,并且这两个页都是 ASP.NET 网页,则可以在源页中添加公共属性,用于公开要在页之间共享的信息。然后,可以在目标页中读取这些属性的值。
说明:仅当这两个页位于同一个 Web 应用程序中时,才能在目标页中读取源页属性。
1, 在源页SourcePage.aspx中,创建一个或多个公共属性。代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>源页</title>
<script runat="server">></head><body><form id="form1" runat="server"><div><table><tr><td><asp:TextBox ID="TextBox1" runat="server">SourcePage</asp:TextBox></td></tr><tr><td><asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /></td></tr></table></div></form></body></html>