首页 > 代码库 > ViewState提交后丢失,竟然是OnInit搞的鬼

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搞的鬼