虽然从页面到页面的重定向通常我习惯将值作为查询字符串传递但是你知道查询字符串不是一个好的方法,因为有很多安全问题,而且它的最大大小是256字节或者是长度2048字符。因此,通过设置上一页(即"<%@ PreviousPageType VirtualPath="" %>"
并访问上一页项目
请告诉我,除了Sessions
以外,还有其他方法可以传递变量并使用上一页概念作为一种好方法吗?
答案 0 :(得分:0)
以下是来自MSDN的How to: Pass Values Between ASP.NET Web Pages:
您可以通过各种方式在页面之间传递信息,其中一些方式 取决于重定向的发生方式。以下选项是 即使源页面位于不同的ASP.NET Web中也可用 来自目标页面的应用程序,或者源页面不是 ASP.NET网页:
- 使用查询字符串。
- 从源页面获取HTTP POST信息。
以下选项仅在源和目标时可用 页面位于同一个ASP.NET Web应用程序中。
- 使用会话状态。
- 在源页面中创建公共属性并访问目标页面中的属性值。
- 从源页面中的控件获取目标页面中的控制信息。
因此,假设您具有相同的ASP.NET应用程序,则PreviousPage属性是为您的案例设计的。
答案 1 :(得分:0)
PreviousPage
旨在用于跨页回发。如果这就是你正在做的事情,那么它没有任何问题。
如果没有回发,对前一个页面类的实例的引用将不会(不应该)包含任何状态信息。
如果您只是使用从一个页面到另一个页面的链接,最好使用会话状态,cookie或数据库之类的东西。如果您正在进行重定向,还有一些选项(包括使用Server.Transfer()
而不是进行实际重定向)。
答案 2 :(得分:-1)
您可以使用其他方法,您应该将数据保存在 context.items
中此方法对于在两个或多个连续页面之间保存数据非常有用。它使用的简单方法如下:
Context.Items.Add("SOMETHING","somevalue");
*您需要使用** Server.Transfer
而不是Response.Redirect。因为如果您使用Response.Redirect方法,您的上下文将被清除,您将无法获得任何值。
希望这会对你有所帮助。