如何在asp.net中将会话值从第2页传递到第1页?

时间:2013-04-20 09:36:07

标签: asp.net session file-upload listbox

我在页面1上有一个列表框和按钮,当我点击按钮时,页面2将在新标签页中打开。在第2页中,我将照片上传到文件夹并设置会话[“FileName”]值。我希望当我关闭页面2时,上传图像的名称将显示在列表框中。

注意:session [“FileName”] =已上传图片的名称。

有没有人有想法?请帮助我。

谢谢。

我的上传课程:

public void ProcessRequest(HttpContext context)
{      
    if (context.Request.Files.Count > 0)
    {
        // get the applications path 

        string uploadPath = context.Server.MapPath(context.Request.ApplicationPath + "/Temp");
        for (int j = 0; j <= context.Request.Files.Count - 1; j++)
        {
            // loop through all the uploaded files 
            // get the current file 
            HttpPostedFile uploadFile = context.Request.Files[j];

            // if there was a file uploded 
            if (uploadFile.ContentLength > 0)
            {
                context.Session["FileName"] = context.Session["FileName"].ToString() + uploadFile.FileName+",";
                uploadFile.SaveAs(Path.Combine(uploadPath, uploadFile.FileName));
            }
        }
    }
    // Used as a fix for a bug in mac flash player that makes the 
    // onComplete event not fire 
    HttpContext.Current.Response.Write(" ");
}

1 个答案:

答案 0 :(得分:0)

Session是ASP.NET中的服务器对象。这意味着,当您在一个页面上创建会话时,只要Session对象未被删除或过期,您就可以在任何其他页面上使用它。

假设您在page1.aspx.cs上执行了此操作

Session["FileName"] = "file1";

然后您可以在page2.aspx.cs上访问它,如下所示:

if(Session["FileName"]!=null)
    Label1.Text = (string)Session["FileName"]

这样,您只能在.aspx页面或Control派生类上访问Session变量。

如果要访问类库项目中的会话变量,请执行以下操作:

HttpContext.Current.Session["FileName"]

此外,您似乎已创建了自定义HttpModule

通知您HTTPModule不得处理在初始化会话状态之前发生的任何管道事件。

Read this了解更多关于如何以及何时访问HttpModule中的Session变量的信息