2011-10-22 208 views
0

只是一个小问题,因为我找不到解决我的问题的答案。返回值来自会话

我有一个ASP页面,它将输入发送到数据库,然后创建一个会话。我想知道如何在的另一个 aspx页面上返回该会话中的某个值。

page1.aspx.cs [创建会话]

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? 

     } 
    } 
} 

我想从价值QuestionnaireName.Text Page1第2页

回答

4

您没有将QuestionnaireName.Text放入Page1的会话中,您输入了一个整数。如果您需要实际的文本属性,将其写入会议

Session["theText"] = QuestionnaireName.Text; 

然后你可以检索

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

这揭示了一些有关会议。对象存储类型为object,您需要在使用前将它们转换为正确的类型。例如,检索你把会议的整数,你会写

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

谢谢,这对我来说是干净的解决方案。 – HGomez90

1

您正在做

Session["Questionnaire"] = testRet; 

On Page1。 Page2上你可以做:

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会话状态。您的应用程序池可以随时回收。 – Icarus

+0

我也试过这种方法。谢谢。 未来可能会使用它,因为它有更多扩展空间=] – HGomez90

0

只是这样做:

string question = Session["Questionnaire"]; 

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

问候

0

您可以使用Session [ “QuestionnaireName”] = QuestionnaireName.Text;

在第二页,你可以retrive值象下面

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

       } 

否则你可以把在ViewState中也。 Passing data between forms