Возвращаемое значение из сессии - PullRequest
0 голосов
/ 22 октября 2011

Просто маленький вопрос, так как я не могу найти ответ, который решает мою проблему.

У меня есть страница 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 было возвращено в ReturnQnrName.Text Page2

Ответы [ 4 ]

5 голосов
/ 22 октября 2011

Вы не поместили QuestionnaireName.Text в сеанс на странице 1, вы поставили целое число.Если вам нужно фактическое свойство text, поместите его в сеанс

Session["theText"] = QuestionnaireName.Text;

, а затем вы можете получить его

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

Это что-то говорит о сессии.Объекты хранятся с типом object, вам нужно привести их к правильному типу, как только вы получите их перед использованием.Например, чтобы получить целое число, введенное вами в сеанс, вы должны написать

int questionnaire = (int)Session["Questionnaire"];
1 голос
/ 22 октября 2011

Вы делаете

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 в свой сеанс, но вы, похоже, хотели сохранить текст в Session и получить его.Принцип тот же.

0 голосов
/ 22 октября 2011

Вы можете использовать Session ["QuestionnaireName"] = QuestionnaireName.Text;

на второй странице вы можете получить значения, как показано ниже

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

                }

или вы также можете вставить в ViewState. Передача данных между формами

0 голосов
/ 22 октября 2011

Просто сделайте это:

 string question = Session["Questionnaire"];

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

Привет

...