【问题标题】:Is it possible to persist the viewstate between pages in ASP.NET?是否可以在 ASP.NET 中的页面之间保持视图状态?
【发布时间】:2011-04-07 07:42:19
【问题描述】:

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

看来viewstate只对一个页面有效,不会转移到其他网页。是否有某种技巧可以使所有网页的 viewstate 全局化?

【问题讨论】:

    标签: c# .net asp.net viewstate


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      不,您不能将视图状态设为全局,它们是特定于页面的。如果您真的想使其成为客户端,我建议您使用 cookie,否则您可以使用会话。

      【讨论】:

        【解决方案3】:

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

        希望对你有帮助

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-08-11
          • 1970-01-01
          • 2020-03-26
          • 1970-01-01
          • 2011-09-07
          • 1970-01-01
          相关资源
          最近更新 更多