2014-02-26 58 views
0

我試圖從一個頁面傳遞信息到另一個使用會話,點擊像這樣的發送按鈕時,實際發送出現:會議沒有傳遞到另一頁

 protected void btnContactMsgSend_Click(object sender, EventArgs e) 
    { 
     Name = txtName.Text; 
     EmailAddress = txtEmailAddress.Text; 
     Subject = txtSubject.Text; 
     MessageBody = txtMssgBody.Text; 


     Session.Add("Name", Name); 
     Session.Add("Email", EmailAddress); 
     Session.Add("Subject", Subject); 
     Session.Add("MessageBody", MessageBody); 

     try 
     { 
      Server.Transfer("~/UserPages/ContactUsConfirm.aspx"); 
     } 
     catch (Exception exc) 
     { 
      MessageBody = Environment.NewLine + "Error occurred" + exc.ToString() ; 
     } 
    } 

在接收頁面我做的以下:

保護無效的Page_Load(對象發件人,EventArgs的){

 string name = null; 
     string email = null; 
     string subject = null; 
     string message = null; 

     try 
     { 
      name = Convert.ToString(Session["Name"]); 
      email = Convert.ToString(Session["Email"]); 
      subject = Convert.ToString(Session["Subject"]); 
      message = Convert.ToString(Session["MessageBody"]); 
     } 
     catch (Exception ex) 
     { 
      txtOutput.Text = Environment.NewLine + ex.ToString(); // edited exception 

      name = "Missing name"; 
      email = "Missing e-mail"; 
      subject = "Missing subject"; 
      message = "Missing message"; 
     } 
     txtOutput.Text = Environment.NewLine + name; 
     txtOutput.Text = Environment.NewLine + email; 
     txtOutput.Text = Environment.NewLine + subject; 
     txtOutput.Text = Environment.NewLine + message; 

    } 

它不工作,在接收頁我沒有得到一個y輸出。

任何人都可以幫忙嗎?

謝謝

+0

只需一眼就能看到,在'btnContactMsgSend_Click'中,您將名稱會話變量4設置爲不同的時間。這會造成問題。 – paqogomez

+0

@paqogomez說,這可能是在4個不同的時間設置名稱的問題。取而代之的是,你不使用這些屬性創建一個類並通過會話傳遞該對象? – shanish

+0

那麼,它只是一個複製粘貼錯誤?或者是否解決了一個問題? – paqogomez

回答

1

它應該是...

​​
+0

謝謝......這是在複製和粘貼時發生的錯誤,它在帖子中進行了編輯,但它確實不工作......就像這樣。 – bluetxxth

0

問題似乎是因爲對會議沒有設定某些設置始發。

你已經設置enableSessionState="true"在web.config.Also的pages標籤嘗試添加會話httpmodules部分:

<add name="Session" type="System.Web.SessionState.SessionStateModule"/> 

還有一件事要做的就是儘量使用Context.RewritePath代替Server.Transfer

+0

非常感謝!那麼我想這就是問題所在,不,我沒有這個設置,有沒有什麼好的資源可以讀到這個? – bluetxxth

+0

你可以從這裏開始:http://msdn.microsoft.com/en-us/library/system.web.sessionstate.sessionstatemodule%28v=vs.110%29.aspx –

+0

@FlopSicentist還有一件事..我添加了enableSessionState =「true」爲頁面標記,但是當我將另一個標記添加到httpmodules時(在標記內),我得到一個內部HTTP錯誤500.19。這是爲什麼? – bluetxxth

0

您對會話變量沒有使用相同的名稱。 Messagrbody和消息在設置和獲取時會有所不同。

+0

非常感謝你,是的,你是對的,但對於消息來說只有這樣,在這種情況下,它應該輸出「無消息」,因爲它被異常所捕獲,但沒有發生。我剛剛編輯它,但它也不工作,甚至沒有:enableSessionState =「true」 – bluetxxth

+0

我認爲會議[「消息」]只是一個空。然後convert(null)不會失敗。試試session [「Message body」]。tostring()。這將失敗,並有例外。與isnullorempty測試是一個更好的解決方案比捕捉異常 – Peter

+0

嗨,謝謝!這是事實,它現在給了我例外。但是會議仍然無效。 – bluetxxth

相關問題