如何在跨页回发中从PreviousPage访问ViewState集合?

时间:2008-10-03 20:47:08

标签: asp.net

在ASP.net 2.0中,网页的PreviousPage属性没有ViewState集合。我想使用此集合在页面之间传输信息。

4 个答案:

答案 0 :(得分:1)

使用HttpContext.Current.Items代替... ViewState仅适用于它所在的页面。

答案 1 :(得分:1)

视图状态是页面独有的。

如果您想转移物品,

  • 您可以将数据保存在数据库,文件,表单身份验证票证或其他cookie中(如果可以帮助,请不要使用Session或HttpContext.Current.Cache)
  • 做一个跨页面的帖子 - 从你的第一页开始,回到第二页(并从HttpContext.Current.Request.Form []集合中获取详细信息)
  • 将值放入查询字符串

答案 2 :(得分:1)

通过使用一些可以容纳对象的基页类,可以避免使用PreviousPageType指令。 例如,你有班级

public class BaseCrossPage:System.Web.UI.Page
{
     public List<Guid> Invitees = new List<Guid>();

}

所以如果第一页来自这个类

public partial class Default : BaseCrossPage
{

    protected void Page_Load(object sender, EventArgs e)
    {

       this.Invitees = LoadInvitees();
    }


}

然后您发布到的页面可以访问该对象,假设前一页派生自BaseCrossPage ...

public partial class secondPage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        BaseCrossPage p = (BaseCrossPage)PreviousPage;
        List<Guid> Invitees = p.InvitedTeams
    }
}

页面之间的“视图状态”...

答案 3 :(得分:0)

你不能直接。 (见http://msdn2.microsoft.com/en-us/library/ms178139(vs.80).aspx

这是你可以做的 -

在第一页上创建公开属性,公开您要共享的信息。在第二页上,将PreviousPageType设置为aspx文件头中的第一页:

<%@ previouspagetype virtualpath="~/firstpage.aspx" %>

然后,在第二页的Load事件中获取这些属性的值:

If (Not MyBase.IsPostBack) Then

    _someValue = Me.PreviousPage.SomeValue

End If