繁体   English   中英

C#会话变量

[英]C# Session Variables

我试图将多个会话变量传递给多个ASP页面。 但是,只有最后的ImageID和Extention值会传递到asp页中。 我需要

    int key = Convert.ToInt32(StockSummary.SelectedRow.Cells[6].Text);
    int index = 1;
    try
    {

        transportFbConn.Open();

        if (transportFbConn.State == ConnectionState.Closed)
        {
            transportFbConn.Open();
        }
        var sqlquerry = String.Format("select image_key,File_EXT from IMAGE_LIST where SOURCE_PK = {0}", key);
        transportFbCommand = new FbCommand(sqlquerry, transportFbConn);
        transportFbReader = transportFbCommand.ExecuteReader();
        if (transportFbReader.HasRows)
        {
            while (transportFbReader.Read())
            {
                ImageID = transportFbReader.GetString(0);
                extention = transportFbReader.GetString(1);
                //Open PDF:
                if (ImageID != "")
                {
                    Session.Add("IMGID", ImageID);
                    Session.Add("Ext", extention);
                    Response.Write(string.Format("<script>window.open('{0}','_blank');</script>", "Trace"+index+".aspx"));
                }
                else
                {
                    this.ErrorLabel.Text = "No Trace Information found for Part Number : " + this.TextTextBox.Text;
                }
                index++;
            }
        }

我尝试了arraylist,但是得到了对象null引用:

 int key = Convert.ToInt32(StockSummary.SelectedRow.Cells[6].Text);
        int index = 1;
        int arrayindex = 0;
        ArrayList imageid = new ArrayList();
        ArrayList extention = new ArrayList();
        try
        {

            transportFbConn.Open();

            if (transportFbConn.State == ConnectionState.Closed)
            {
                transportFbConn.Open();
            }
            var sqlquerry = String.Format("select image_key,File_EXT from IMAGE_LIST where SOURCE_PK = {0}", key);
            transportFbCommand = new FbCommand(sqlquerry, transportFbConn);
            transportFbReader = transportFbCommand.ExecuteReader();
            if (transportFbReader.HasRows)
            {
                while (transportFbReader.Read())
                {
                    imageid.Insert(arrayindex, transportFbReader.GetString(0));
                    extention.Insert(arrayindex, transportFbReader.GetString(1));
                    //Open PDF:
                    if (ImageID[arrayindex].ToString() != "")
                    {
                        Session.Add("IMGID", ImageID[arrayindex]);
                        Session.Add("Ext", extention[arrayindex]);
                        Response.Write(string.Format("<script>window.open('{0}','_blank');</script>", "Trace"+index+".aspx"));
                    }
                    else
                    {
                        this.ErrorLabel.Text = "No Trace Information found for Part Number : " + this.TextTextBox.Text;
                    }
                    index++;
                    arrayindex++;
                }
            }

如果存在具有相同键值的会话变量,它将被覆盖。 因此,您总是用最新的值更新相同的密钥。

您应该在会话中放置ImageId列表,而不要放置单个图像,因为您只能有一个由相同键表示的对象。 基本上,每次循环都会覆盖它。

最好创建一个将所有键和值存储在temp变量中的数组,然后将其存储在会话中。 因为使用相同的键会覆盖值

ArrayList ar_IMGID = new ArrayList();
ArrayList ar_Ext = new ArrayList();

while (transportFbReader.Read())
            {
                ImageID = transportFbReader.GetString(0);
                extention = transportFbReader.GetString(1);
                //Open PDF:
                if (ImageID != "")
                {

                    ar_IMGID.Add(ImageID);
                    ar_Ext.Add(extention);
                 }
             }
Session.Add("IMGID", ar_ImageID);
Session.Add("Ext", ar_Ext);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM