2011-10-22 23 views
0

私の問題を解決する答えは見つけられません。セッションからの戻り値

私は、データベースに入力を送信してセッションを作成するASPページを持っています。私はそのセッションで特定の価値を返す方法を知りたいです別の aspxページ。

page1.aspx.cs私はから値QuestionnaireName.Textを希望

public partial class new_questionnaire : System.Web.UI.Page 
    { 
     OscarSQL c; 

      protected void Page_Load(object sender, EventArgs e) 
      { 
       c = new OscarSQL(); 
      } // End Page_Load 

      ////// Button Method //////   
      protected void NewQnrButton_Click(object sender, EventArgs e) 
      { 
       // Check if the input fields are empty. 
       if (QuestionnaireName.Text == "" || CustomerID.Text == "" || NumberOfQuest.Text == "") 
       { 
        Error.Text = "Please enter a name for your questionnaire."; 
       } 
       // Parse input values to OscarSQL. 
       else 
       { 

        int testRet = c.InsertQuestionnaire(QuestionnaireName.Text, Int32.Parse(CustomerID.Text), Int32.Parse(NumberOfQuest.Text)); 
        Session["Questionnaire"] = testRet; 
        Confirm.Text = "Your questionnaire has been named " + QuestionnaireName.Text; 
        Response.Redirect("~/add_questions.aspx"); 
       } 

      } // End NewQNRButton_Click 

     } // End new_questionnaire 

Page2.aspx.cs [ここで解析されるべき値をご希望]

namespace OSQARv0._1 
{ 
    public partial class WebForm2 : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      //ReturnQnrName.Text here? 

     } 
    } 
} 

[セッションを作成します] Page1をReturnQnrName.Textに返すPage2

答えて

4

あなたはPage1のセッションにQuestionnaireName.Textを入れなかったので、整数を入れます。あなたが実際のテキストプロパティが必要な場合は、セッション

Session["theText"] = QuestionnaireName.Text; 

にそれを入れて、あなたはそれが

string text = (string)Session["theText"]; 

これは、セッションについて何かを明らかに取得することができます。オブジェクトはタイプobjectで保存されていますので、使用前に検索すると正しいタイプにキャストする必要があります。たとえば、あなたがセッションに入れ整数を取得するには、次のように記述し

int questionnaire = (int)Session["Questionnaire"]; 
+0

ありがとう、これは私にとってクリーンなソリューションでした。 – HGomez90

1

あなたはしています

Session["Questionnaire"] = testRet; 

オンページ1。ページ2であなただけ行うことができます。

protected void Page_Load(object sender, EventArgs e) 
{ 
    string questionnaire = Session["Questionnaire"] as string; 
    if(!string.IsNullOrEmpty(questionnaire)) 
    ReturnQnrName.Text =questionnaire ; 

} 

はちょうどあなたがあなたのセッションでint型を入れていますが、セッション中にテキストを格納し、それを取得したいように見えたことに気づきました。原則は同じです。

+0

なぜ: '文字列アンケート=セッション[「アンケート」];' – Kakashi

+2

@Kakashiそれは悪い習慣だからです。 'Session [" Questionnaire "]'の値は、あなたがそれを割り当てる機会を得る前に削除することができます。 InProcess Session Stateについて考える。あなたのアプリケーションプールは、いつでもリサイクルすることができます。 – Icarus

+0

私もこの方法を試しました。ありがとう。 拡張の余地があるのでこれを将来使用することができます]] – HGomez90

0

ちょうどこの操作を行います。

string question = Session["Questionnaire"]; 

    if(question=="") 
    { 
     //No Value 
    } 
else 
{ 
    ReturnQnrName.Text = question; 
} 

よろしく

0

セッション[ "QuestionnaireName"] = QuestionnaireName.Textを使用することができますが、

2ページ目に、あなたは以下の

   string QuestionnarireName; 
       if (Session["QuestionnaireName"] != null) 
       { 
        QuestionnarireName = Session["QuestionnaireName"].ToString(); 

       } 

のような値をretriveすることができますか、他ます。また、ViewStateに置くことができます。 Passing data between forms