Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在页面生命周期结束时设置viewstate变量_C#_.net_Asp.net_Ajax - Fatal编程技术网

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

C# 在页面生命周期结束时设置viewstate变量,c#,.net,asp.net,ajax,C#,.net,Asp.net,Ajax,我想做的是在页面生命周期结束时设置一个ViewState变量:我所拥有的,是完全加载的asp.net页面-使用客户端JavaScript与AJAX调用通信。。。当执行来自客户端JavaScript的ajax调用时,会执行来自服务器代码的一些C#方法。在这个执行过程中,我想设置一个ViewState变量并在下一次回发时使用它,但显然ViewState变量没有被存储——因为页面已完全加载——所有逻辑都在页面生命周期结束时执行 在设置ViewState变量之前和之后,我尝试显式调用这些方法:

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

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

       this.TrackViewState();
       if (startAddr != "")
       {
           ViewState["startAddress"] = startAddr;
       }
       this.SaveViewState();
但是没有成功。。。在下一次回发时,
ViewState[“startAddress”]
为空

如果可以实现上述功能,有什么建议吗?!
谢谢

不应该直接调用SaveViewState方法

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

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

protected override object SaveViewState()
{
    if (startAddr != "")
    {
        ViewState["startAddress"] = startAddr;
    }
    return base.SaveViewState();
}
据我所知,, 您不需要将变量存储在
视图状态中
, 如果ur值是从网页获取的, 当您使用Ajax回调时(不确定是否使用
CallBack
PageMethod
), 您可以获取值,而无需将其存储在
viewstate
中。 juz将值存储在JS变量中

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


希望它能起作用

是的,调试后-很明显,viewstate变量已分配,但未存储-在下一次回发时,它的值为Null。强烈建议:感谢您的回复,但实际上是SaveViewState()方法在startAddr赋值后不调用,赋值在执行c#过程中执行,从客户端javascript(ajax)调用的方法在ajax回调过程中不保持ViewState。改用hiddenfield或session。