2012-01-07 56 views
2

尽管我一般用来传递值作为查询字符串,但是由于知道查询字符串并不是一个好方法,因为有许多安全问题,而且它的最大大小为256字节或长度为2048个字符。因此,它是一个很好的方法,通过设置前一页即"<%@ PreviousPageType VirtualPath="" %>"和访问前一页项目Asp.Net,从前一页访问变量是一个好方法?

访问变量请让我知道,是否有流过比Sessions其他变量的任何其它方式使用前一页概念的好方法?

回答

0

下面是从MSDN的How to: Pass Values Between ASP.NET Web Pages

您可以通过各种方式的页面,其中一些 取决于重定向发生之间的信息。下列选项 可即使源页是从目标页面不同的ASP.NET Web应用程序 ,或者如果源页是不是 ASP.NET Web页:

  • 使用查询串。
  • 从源页面获取HTTP POST信息。

以下选项仅在源页面和目标页面位于同一ASP.NET Web应用程序中时才可用。

  • 使用会话状态。
  • 在源页面中创建公共属性并访问目标页面中的属性值。
  • 从源页面中的控件获取目标页面中的控制信息。

因此,假设您具有相同的ASP.NET应用程序PreviousPage属性是为您的情况准确设计的。

-1

您可以使用另一种方法,你应该让你在context.items

数据这种做法是非常有用的数据在两个或多个连续的页面之间保存。它是一种简单的方法使用的相同:

Context.Items.Add("SOMETHING","somevalue"); 

*您需要使用** Server.Transfer的

代替的Response.Redirect。因为如果你使用Response.Redirect方法,你的上下文将被清除,你不能得到任何值。

希望这会帮助你。

+0

Server.Transfer是一个严重的限制。即使这样做,为什么你需要使用非类型集合而不是类型化的PreviousPage属性? – Restuta 2012-01-07 05:41:31

+0

是的,但它的加权方法也是Response.Redirect。因为他正在寻求一种在两页之间传递数据的好方法......我想这是适当的。 – 2012-01-07 05:46:25

+0

什么是轻量级?在可维护性方面它很重。这很重要。 – Restuta 2012-01-07 05:47:55

0

PreviousPage适用于跨页面回发。如果这就是你正在做的事情,那么它没有任何问题。

如果没有回传,则前一个页面类的实例的引用不会(不应该)包含任何状态信息。

如果您只是使用从一个页面到另一个页面的链接,最好使用会话状态,Cookie或数据库之类的内容。如果您正在进行重定向,还有几个选项(包括使用Server.Transfer()而不是实际重定向)。