是否有可能在ASP.NET的页面之间持久化视图状态?

本文关键字:之间 持久化 视图状态 有可能 ASP NET 是否 | 更新日期: 2023-09-27 17:49:34

我有一个button(视图状态启用)在主网页,并将其设置为visible=false在一个子网页。如果打开第二个子页面,按钮状态(visible=false))不持续。

似乎viewstate只对一个页面有效,不转移到其他网页。是否有某种技巧使viewstate全局的所有网页?

是否有可能在ASP.NET的页面之间持久化视图状态?

不,viewstate是特定于页面的。您将需要使用会话变量或查询字符串参数之类的东西来在页面之间传递您的状态。

不,你不能使viewstate全局,它们是特定于页面的。如果你真的想让它成为客户端,我建议你使用cookie,否则你可以使用session。

如果您需要在"全局"级别上存储,您应该使用Application State。你也可以使用缓存对象。您可能希望将值从一个页面传递到另一个页面,您可以通过将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"];
        }
    }
}

希望能有所帮助