zoukankan      html  css  js  c++  java
  • Server.Transfer中传递ViewState方法

        当我们使用Server.Transfer时,可以将先前页面中的Request参数一起传到下一页面。但如何将ViewState一起传过去呢?
        主要方法是先将ViewState缓存起来,然后在通过缓存获取。缓存可以是Session等。
        网上有人写了方法,主要是先将ViewState用方法返回。然后在调用页面中通过反身获取。与缓存原理类似。

    例子如下:

        Default.aspx页面

        增加一个ViewState,并添加返回ViewSate的ReturnViewState()方法,最后使用Server.Transfer跳转,代码如下:

            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    ViewState["vId"] = "test";
                    Server.Transfer("Tra.aspx");
                }
            }

            /// <summary>
            
    /// 用此方法返回当前页面的ViewState
            
    /// </summary>
            
    /// <returns></returns>
            public StateBag ReturnViewState()
            {
                return ViewState;
            }
        }
     

        Tra.aspx页面:

        在此页面通过反段得到先前页面的ViewState。

            protected void Page_Load(object sender, EventArgs e)
            {
                InitialData();           
            }

            /// <summary>
            
    /// 通过反射得到ViewState,并显示
            
    /// </summary>
            private void InitialData()
            {
                if (null != PreviousPage)
                {
                    Object objPreviousPage = (Object)PreviousPage;
                    MethodInfo objMethod = objPreviousPage.GetType().GetMethod("ReturnViewState");
                    if (objMethod != null)
                    {
                        StateBag viewStageBage = (StateBag)objMethod.Invoke(objPreviousPage, null);
                        if (viewStageBage != null)
                        {
                            if (null != viewStageBage["vId"])
                            {
                                Response.Write("vId:" + viewStageBage["vId"].ToString() + "<br/>");
                            }
                        }
                    }
                }           
            }
  • 相关阅读:
    第二节:如何正确使用WebApi和使用过程中的一些坑
    nodejs中function*、yield和Promise的示例
    关于nodejs访问mysql的思考
    nodejs使用log4js记录日志
    nodejs初识
    Spring学习笔记(入门)
    mybatis使用注解开发
    MyBatis配置文件中的常用配置
    using 自动释放资源示例
    Java将byte[]和int的互相转换
  • 原文地址:https://www.cnblogs.com/scottckt/p/2277903.html
Copyright © 2011-2022 走看看