ViewState提交后丢失,竟然是OnInit搞的鬼

Posted 堕落的卖猪贩-做人就象做诗,一旦上了境界,就下不来了。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ViewState提交后丢失,竟然是OnInit搞的鬼相关的知识,希望对你有一定的参考价值。

提交后报错,断点看ViewStat值没有了。排查半天完全不知道怎么回事。

百度搜索了下ViewState提交丢失。然后CSDN一个帖子说的半拉子话提点了我。

 

然后想到我经常重写这些函数。以前怎么没遇到。然后检查代码改写后解决,虽然不知道怎么回事,但解决了。

 

原代码如下:

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    if (!IsPostBack)
    {
        vOrderID = Convert.ToInt32(Request.QueryString["OrderID"]);
    }
}
protected int vOrderID
{
    get
    {
        return (ViewState["vOrderID"] == null) ? 0 : Convert.ToInt32(ViewState["vOrderID"]);
    }
    set
    {
        ViewState["vOrderID"] = value;
    }
}

就出在第一个函数上。改成如下放到OnPreLoad就对了。

protected override void OnPreLoad(EventArgs e)
{
    base.OnPreLoad(e);
    if (!IsPostBack)
    {
        vOrderID = Convert.ToInt32(Request.QueryString["OrderID"]);
    }
}
protected int vOrderID
{
    get
    {
        return (ViewState["vOrderID"] == null) ? 0 : Convert.ToInt32(ViewState["vOrderID"]);
    }
    set
    {
        ViewState["vOrderID"] = value;
    }
}

备忘,同时希望能给大家提供帮助。

以上是关于ViewState提交后丢失,竟然是OnInit搞的鬼的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET,用户控件和 ViewState 丢失了正确的数据,尝试进入用户控件事件

使用 JavaScript 出现在控件之后/下方的控件的 ViewState 丢失

为啥提交类型的按钮在父组件中触发OnInit

pyton简单网络爬虫,aspx网站中form使用到了__VIEWSTATE__EVENTVALIDATIONcookie来验证的提交

WebPart 上的用户控件、PostBack / ViewState 问题

012-ViewState状态保持