1

私がやろうとしているのは、の後にクリアするまで値を配列に保持することSendEmail()です。セッション配列が上書きされているようです。どんな助けでも素晴らしいです。

つまり、SendEmail() ルーチンでクリアするまで、別のレコードを ArrayList に追加するということです。

もちろん、後で重複したレコードを削除する必要がありArrayListます。

これが私のC#2.0コードです:

Login.cs 内

public void Page_Load(object sender, EventArgs e)
{
    Session["MyArrayList"] = null;
}

Share.cs 内

public void Page_Load(object sender, EventArgs e)
{
    ArrayList idList = new ArrayList();
    idList.Add(System.IO.Path.GetFileName(FileName));
    Session["MyArrayList"] = idList;                 
}

protected void SendEmail(object sender, EventArgs e)
{
    // To view the Arraylist
    ArrayList idList = (ArrayList)Session["MyArrayList"];

    foreach (string val in idList) 
    { 
        Response.Write(val); 
    }
}
4

2 に答える 2

0

ページが読み込まれるたびにリストに実際に何かを追加する必要があるため、問題は、ページが読み込まれるたびに新しい ArrayList をインスタンス化することです。そのため、追加される代わりに上書きされます。実際に行う必要があるのは次のとおりです

ログイン.cs

public void Page_Load(object sender, EventArgs e)
{
    Session["MyArrayList"] = new ArrayList();
}

共有.cs

public void Page_Load(object sender, EventArgs e)
{
        ArrayList idList = (ArrayList)Session["MyArrayList"];   
        idList.Add(System.IO.Path.GetFileName(FileName));
        Session["MyArrayList"] = idList;                 
}

ログインページでリストをインスタンス化し、セッションに保存します。他のページでは、以前に保存されたリストをセッションから取得し、それを割り当ててidList適切にキャストし、新しいものを追加してセッションに戻します。

注: セッションが空の場合、またはセッションに ArrayList が含まれていない場合、これにより例外が生成されます。そのため、おそらくコードにチェック メカニズムを組み込む必要があります。

于 2013-09-20T18:37:36.403 に答える