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

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

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

 

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

 

原代码以下:code

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就对了。blog

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;
    }
}

备忘,同时但愿能给你们提供帮助。get

相关文章
相关标签/搜索