是否可以在ASP.NET中的页面之间保持视图状态?

时间:2011-04-07 07:42:20

标签: c# .net asp.net viewstate

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

似乎 viewstate 仅对一个页面有效,不会传输到其他网页。是否有某种技巧可以使所有网页的 viewstate 全局?

3 个答案:

答案 0 :(得分:15)

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

答案 1 :(得分:3)

不,您无法使视图状态为全局,它们是特定于页面的。如果你真的想让它成为客户端,我建议使用cookies,否则你可以使用session。

答案 2 :(得分: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"];
        }
    }
}

希望这有帮助