2012-03-16 54 views
0

我沒有使用MVC,但表單身份驗證。當按下提交按鈕時,我遇到變量存儲問題。我花了2天研究如何做到這一點。在這一點上,我只是想讓用戶名在下一頁上發佈。我真的認爲我瞭解了Viewstate在完成這一年後的工作方式。簡單的信息從一個c#asp.net頁面到下一個問題

代碼:

protected void Page_Load(object sender, EventArgs e) 
    { 

     if (IsPostBack) { 
      string username = Page.Session["username"].ToString(); 
      Response.Write(username); 
     } 

    } 

    protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
     Page.Session["username"] = txtUsername.Text; 
    } 
+0

btnSubmit會觸發回傳嗎? – Jetti 2012-03-16 16:56:11

+0

嗯,我認爲是的。我怎麼知道?當我刪除if(isPostback)代碼時,它只是刷新頁面。當我現在將其添加回來時,它會給我錯誤的對象引用未設置爲對象的實例。 – Geekender 2012-03-16 17:01:11

+0

使用斷點,看看它不工作 – Shyju 2012-03-16 17:06:03

回答

0

於是經過一番搜索,我發現這個問題。你的代碼是有效的,但是回發發生在你的Page.Session["username"] = txtUsername.Text;之前,這意味着如果你坐在那裏再次點擊按鈕,你應該看到結果。

我很猶豫要發表,直到我找出一種方法來解決它(因爲誰在乎爲什麼你有問題,如果沒有解決方案),我想通了。您需要將該按鈕的「UseSubmitBehavior」更改爲false。所以,你的Page_Load應該是這樣的:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(IsPostBack) { 
     string username = Page.Session["username"] as string; // will be null if empty 
     Resopnse.Write(username); 
    } 
    btnSubmit.UseSubmitBehavior = false; 
} 

這應該允許txtUsername值被放入回發之前,會話變量,因此,你將有機會獲得它在頁面加載。

相關問題