在页面生命周期结束时设置viewstate变量

时间:2011-04-06 21:27:56

标签: c# .net asp.net ajax

我想要做的是在页面生命周期结束时设置一个ViewState变量:我拥有的是完全加载的asp.net页面 - 使用客户端JavaScript与AJAX调用进行通信...当ajax调用来自执行客户端JavaScript,执行服务器代码中的一些C#方法。在执行期间,我想设置一个ViewState变量并在下一个回发中使用它,但显然没有存储ViewState变量 - 因为页面已完全加载 - 所有逻辑都在页面生命周期结束时执行。

我尝试在设置ViewState变量之前和之后显式调用这些方法:

       this.TrackViewState();
       if (startAddr != "")
       {
           ViewState["startAddress"] = startAddr;
       }
       this.SaveViewState();

但没有成功......在下一次回发中,ViewState["startAddress"]为空。

任何建议,如果可以实现上述功能?! 谢谢!

3 个答案:

答案 0 :(得分:2)

您可以覆盖页面的SaveViewState方法,以查看它是否在您的代码之前调用。 SaveViewState是您可以在ViewState中存储不属于控件层次结构的对象的最后一点。

protected override object SaveViewState()
{
    if (startAddr != "")
    {
        ViewState["startAddress"] = startAddr;
    }
    return base.SaveViewState();
}

答案 1 :(得分:0)

您不应直接调用SaveViewState方法。

检查页面中的EnableViewState是否设置为true。并检查是否真的分配了ViewState。

答案 2 :(得分:0)

据我所知, 你不需要在viewstate中存储变量, 如果从网页获取你的值, 当您使用 Ajax 回拨(不确定使用CallBackPageMethod)时, 你可以在不viewstate的情况下获得价值。 juz将值存储在 JS 变量中。

如果有任何建议或疑惑,请告诉我?

希望它有效!