会话为空但仍然在内部不为空

时间:2016-12-27 07:48:49

标签: c# asp.net session

我有一段代码,我正在检查Session值。

因此,在gridview内首次插入行时,我在session上将null值设置为Page_load

但是在调试此处发生的事情的同时,它仍处于Sessionnot null

检查的情况下

以下是我的代码。

int iRowCountExp = 0;      
if (Session["ExpInfo"] != null)
{   
    dtExpInfo = (DataTable)Session["ExpInfo"];

    if (strMode == "M")
    {
        FunFillGridDetails();
        dtExpInfo = (DataTable)Session["ExpInfo"];
    }
}
else
{
    BindDataTable();
}

Page_load代码

if (!IsPostBack)
{
     Session["ExpInfo"] = null;
}

2 个答案:

答案 0 :(得分:1)

Session.Remove(variableName)从字典中删除条目(键和值)。 Session[variableName] = null为字典中的键指定一个值(值为null)。因此,该值将仅为null,并且密钥仍将存在。如果您使用Session.Remove(variableName)删除变量,则会删除该变量并且您的检查将成功。希望你明白这一点。

因此你的代码应该是:

if (!IsPostBack)
{
     Session.Remove("ExpInfo");
}

答案 1 :(得分:0)

尝试此代码正常运行

if (!IsPostBack)
    {
         Session["ExpInfo"] = string.Empty;
          string value = Session["ExpInfo"] as string;
         if (String.IsNullOrEmpty(value))
         {
           BindDataTable();
        }
        else
        {
             dtExpInfo = (DataTable)Session["ExpInfo"];
             if (strMode == "M")
             {
            FunFillGridDetails();
            dtExpInfo = (DataTable)Session["ExpInfo"];
            }
       }
    }