6

asp.netセッションを使用してページからページに変数を渡す際の問題は何だろうと思っています。

何が起こっているのかを確認するために、コードをテキスト ボックス 1 つだけにまとめました。テキストボックスの値を取得して確認ページに表示しようとしています。ボタンをクリックすると 2 ページ目に移動しますが、ラベルは空白です。はい、私のポスト バック URL は 2 番目のページを指しています。

ボタンのクリックは次のとおりです。

protected void submit_Click(object sender, EventArgs e)
{
    string name = txtFirstName.Text.Trim();
    Session["name"] = name;
}

2 ページ目のページ読み込みは次のとおりです。

protected void Page_Load(object sender, EventArgs e)
{
    lblName.Text = (string)(Session["name"]);
}

私がこれを長い間見ていて、何かを見逃していない限り。MSDN の「方法: セッション状態から値を読み取る」を既に読みました。

4

7 に答える 7

6

PostBackUrl を 2 番目のページに設定したとします。そのようにする場合は、Page.PreviousPage を使用してテキスト ボックスにアクセスする必要があります。しかし、これが最も簡単な方法です:

まず、PostBackUrl をそのままにしておきます。PostBackUrl を 2 番目のページに設定するということは、最初のページではなく、2 番目のページにボタンのクリックを処理するように指示していることを意味します。したがって、セッション変数は設定されず、プルしようとすると null になります。

これでうまくいくはずです。

はい、QueryString を使用してこれを行うこともできますが、ユーザーに表示/編集させたくない場合は、Session 変数の方が適しています。

 protected void submit_Click(object sender, EventArgs e)
 {
      string name = txtFirstName.Text.Trim();
      Session["name"] = name;
      Response.Redirect("PageTwo.aspx");
 }

次に、2 ページ目 (ToString() は本当に必要ありません):

 protected void Page_Load(object sender, EventArgs e)
 {
      if (Session["name"] != null)
      {
           lblName.Text = Session["name"].ToString();
      }
 }

編集- ボタンのクリックが実際に発生することを確認してください。私はほとんどの作業を C# ではなく VB.NET で行っているため、誰かがこれを間違って修正することができます。ただし、OnClick 値を指定しないと、関数は呼び出されません。

 <asp:Button ID="Button1" runat="server" Text="Click Me!" OnClick="submit_Click" />
于 2013-10-29T20:41:50.650 に答える
0

2 ページ目用

protected void Page_Load(object sender, EventArgs e)
{
    if (Session["value"] != null)
    {
        Label1.Text = Session["value"].ToString();

    }
    else 
    {
        Label1.Text = "Sorry,Please enter the value  ";
    }
}
于 2014-08-03T14:30:59.277 に答える
0

セッションを追加したとは思いません。これが私のやり方です。

先頭ページ

protected void btnView_Click(object sender, EventArgs e)
        {
            foreach (ListItem li in lbxCheckDates.Items)
            {
                if (li.Selected == true)
                {
                    lblMessage.Text = "";
                    string checkDate = lbxCheckDates.SelectedItem.Text;
                    Session.Add("CheckDates", checkDate);
                    Page.ClientScript.RegisterStartupScript(
                    this.GetType(), "OpenWindow", "window.open('Paystub.aspx','_newtab');", true);
                }
            }
        }

セカンドページ

protected void Page_Load(object sender, EventArgs e)
       {
            string checkDate = (string)(Session["CheckDates"]);

            //I use checkDate in sql to populate a report viewer
        }

だからあなたと一緒に、私はあなたが必要だと思います..

protected void submit_Click(object sender, EventArgs e)
    {
        string name = txtFirstName.Text.Trim();
        Session.Add("Name", name);
    }

2ページ目にあるものはうまくいくはずですが、うまくいかない場合は、ToString()を次のように追加してください..

lblName.Text = (string)(Session["name"]).ToString();

これが役立つかどうか教えてください!

于 2013-10-29T20:44:41.447 に答える
-2

最初のページには、これを使用します。

protected void Button1_Click(object sender, EventArgs e)
{
    string value = TextBox1.Text;
    Session["value"] = value;
    Response.Redirect("~/Sessionpage.aspx");
}
于 2014-08-03T14:27:01.897 に答える