2015-07-06 102 views
0

我剛剛開始學習ASP.NET,並且遇到了獲取文本框值的問題。我想做一個簡單的計算器,只有4個基本操作,但是會發生的是,在單擊+符號並單擊Go後,我看到我沒有存儲第一個數字。第二個數字是好的,但。這是我的代碼示例。爲什麼我無法從文本框中獲取值?

public partial class deafult : System.Web.UI.Page 
{ 
    public TextBox output = new TextBox(); 
    public double temp,tempAdd, calc; 

    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    protected void btnAdd_Click(object sender, EventArgs e) 
    { 
     tempAdd = Convert.ToDouble(output.Text); 
     output.Text = String.Empty; 
    } 
    //User enters another number after clicking Add button then clicks Proc 
    protected void proc_Click(object sender, EventArgs e) 
    { 
     temp = Convert.ToDouble(output.Text); 
     calc = tempAdd + temp; 
     output.Text = calc.ToString(); 
    } 
} 

我調試和tempAdd始終是0,但我得到的數字在溫度。 temp變量和calc被定義爲public。

回答

1

你基本上遇到了所有變量在頁面加載時被重新初始化的問題。不像winforms,web is stateless

但是,刷新之間存在持續狀態的方法。對於您的應用程序來說,最明顯的選擇是隻使用兩個值以及您想要對它們執行的操作,然後僅向服務器發送一次。即一鍵點擊。

但是,對於個人的薰陶,它可能值得查找ViewState。這允許您將值存儲在一個排序數組中,並在刷新後檢索它們。

ASP.NET中還有一些會話和應用程序級別的數組,其工作方式類似。

0

每次您通過事件致電頁面時,您的所有屬性都將被初始化。 嘗試在一個事件中執行所有的邏輯或將您的屬性存儲在manager/service/db中。

0

在web(Asp.Net)中每個回發屬性都會被清除,嘗試使用ViewState或Session變量來保存這些值。請參閱MS的Asp.Net狀態管理概念。

希望這可以幫助你。

0

Web控件是國少,所以你應該用戶會話沙爹舉辦的第一個值,然後做你的東西...

例如: -

protected void btnAdd_Click(object sender, EventArgs e) 
    { 
     Session["tempAdd"] = output.Text; 
     output.Text = String.Empty; 
    } 

    protected void proc_Click(object sender, EventArgs e) 
    { 
     temp = Convert.ToDouble(output.Text); 
     string oldval=Session["tempAdd"] != null ?Session["tempAdd"].ToString() :""; 
     if(oldval!="") 
      tempadd=Convert.ToDouble(oldval); 

     calc = tempAdd + temp; 
     output.Text = calc.ToString(); 
    } 
+0

我如何檢查是否會話的值空,這樣我就可以做4個不同的操作,只用一個按鈕?我試圖如果(!string.IsNullOrEmpty(會話[「tempAdd」]作爲字符串)),但然後我再沒有值 – gadria

+0

@gadria我有點混淆你在問什麼..將你的plz精心製作更多.. –

+0

我想爲加,減,乘,除做到這一點。他們每個人的onclick方法都有這個會話邏輯。當我點擊'proc'時,我想知道Session中的值,以便我知道要執行哪個操作。 – gadria

相關問題