Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.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# 如何在asp.net c中结束和恢复会话_C#_Asp.net_Session_Session State - Fatal编程技术网

C# 如何在asp.net c中结束和恢复会话

C# 如何在asp.net c中结束和恢复会话,c#,asp.net,session,session-state,C#,Asp.net,Session,Session State,是否可以在asp.net c中清除一个页面上的会话值并在另一个页面上恢复该会话?怎样我正在清除page1.aspx上的会话,然后重定向到page2.aspx,该会话应恢复。 到目前为止,我已经尝试过: 会话。放弃 但它不起作用 代码在第一页。会话[searchText]正在产生问题 else if (RadTabStrip1.SelectedIndex == 1) { if (!Permissions.checkPermissions(Session["employeeloggedin"

是否可以在asp.net c中清除一个页面上的会话值并在另一个页面上恢复该会话?怎样我正在清除page1.aspx上的会话,然后重定向到page2.aspx,该会话应恢复。 到目前为止,我已经尝试过:

会话。放弃 但它不起作用

代码在第一页。会话[searchText]正在产生问题

else if (RadTabStrip1.SelectedIndex == 1)
{
    if (!Permissions.checkPermissions(Session["employeeloggedin"].ToString(), "ACCTMODF"))
    {
        ScriptManager.RegisterStartupScript(this, Page.GetType(), "OnLoad", "alert('You must have the Accounts: modify permission to batch invoice!')", true);
    }
    else
    {
        // added by shiv on 07/14/2015
        Session["searchText"] = null;

        fillBatchInvoiceGrid();
第二页代码

if (e.CommandName == "alpha" || e.CommandName == "NoFilter")
{

    String value = null;
    switch (e.CommandName)
    {
        case ("alpha"):
        {
            value = string.Format("{0}", e.CommandArgument);
            break;
        }
        case ("NoFilter"):
        {
            value = "%";
            Session["searchDuplicate"] = null;
            Session["searchCusSalesRep"] = null;
            break;
        }
    }
    // Session["searchletter"] = value;
    Session["searchType"] = "1";
    Session["searchText"] = value;
    Session["searchFilter"] = "1";
我正在使Session[searchText]=null;在第一页,这就是为什么在第二页,我无法访问它。

更新:

根据op要求,会话[searchtext]返回到第一页时不应相同。因此,我写下面的解决方案来解决这个问题

第一页:

Session["Searchtext"] = "something";
第二页:

Session["Searchedtext"] = Session["Searchtext"];
Session["Searchtext"] = "";
旧答案:

在访问之前,请检查它是否为空

if(Session["searchText"]!=null)
{
  //do your stuffs
}

为什么在下一页需要时清除会话。跨页面的数据持久性是会话的本质。它的要求是。我必须清除会话,因为如果我不清除会话。我在特定页面上获取了不必要的数据。如果您确实需要清除第1页上的会话并在第2页获取它,我认为您可以将值存储在服务器临时数据、cookie。。。然后在第2页访问它,2使用query stringgreat将值传递给第2页。让我试试这个,我已经在第1.aspx页上做了。但是它在page2.aspx上的问题我必须清除page1.aspx上的会话,并且我必须访问page2.aspx上的会话@你的问题本身使人困惑。我用一个例子来假设你的情景。我正在进行会话[First],该会话将字符串名称作为“Test”保存在第一页中。如果我想在第二个页面上访问它,那么我可以使用字符串secondpage=Session[First]简单地完成;你的问题是什么?。您想覆盖第二页中的同一个会话[第一页]?我确实想这样做,但我正在按照要求清除该会话,因此我无法访问您评论中的第二页,因为我已清除该会话。但我还是想恢复它,你不能这么做。我们可以通过两种方式进行清除,一种是使用Session[searchtext]=;以及其他正在使用Session.about;的用户;。在这两方面,你都不能这样做。因为您正在清除其中的值。它如何知道先前的值?。您可以将第一页会话的值分配到其他模式并清除该会话。和检索回值,并分配给同一会话。