2011-04-07 79 views
4

我有一个button(查看状态启用)主网页,并将其设置为visible=false在其中一个子网页。如果第二个孩子页面被打开,按钮状态(visible=false)没有坚持。是否有可能在ASP.NET中的页面之间保持视图状态?

看来视图状态有效期只有一个页面,而不是转移到其它网页。是否有某种诡计,使视图状态全球所有的网页?

回答

13

没有,视图状态是特定页面。你需要使用像一个会话变量或查询字符串参数来传递页面之间的状态。

3

不,你不能让图全局状态,它们是页面特定的,如果你真的在使用,我会建议使用cookies nt使其成为客户端,否则您可以使用会话。

0

如果您需要在“全局”级别存储,则应该使用应用程序状态。您也可以使用缓存对象。 您可能希望将值从一个页面传递到另一个页面,您可以通过将Context对象与Server.Transfer结合使用来实现此目的。

1)你必须返回值的源页面上的公用属性来传递

namespace SomeNameSpace 
{ 
    public partial class SourcePage: System.Web.UI.Page 
    { 
     public string ValueToPass 
     { 
      get 
      { 
       if (Context.Items["ValueToPass"] == null) 
        Context.Items["ValueToPass"] = string.Empty; 
       return (string)Context.Items["ValueToPass"]; 
      } 
      set 
      { 
       Context.Items["ValueToPass"] = value; 
      } 
     } 
     ........ 
    } 
} 

2)做一个Server.Transfer的(DestinationPage.aspx) 3)在目标页面的Page_Load事件

namespace SomeNameSpace 
{ 
    public partial class SourcePage: System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      var value = this.Context.Items["ValueToPass"]; 
     } 
    } 
} 

希望这有助于

相关问题