2013-08-26 72 views
-5
public partial class MainBookingform : System.Web.UI.Page 
{ 

    static int numberOfBeachBookingInteger = 0; 
    static int numberOfBushBookingInteger = 0; 
    static int totalRevenueInteger = 0; 


    protected void Page_Load(object sender, EventArgs e) 
    { 

     if (!IsPostBack) 
     { 
      if (Session["beachBach"] != null) 
      { 
       numberOfBeachBookingInteger += 1; 
       beachBachLabel.Text = numberOfBeachBookingInteger.ToString(); 
      } 
      if (Session["beachBach"] != null) 
      { 
       numberOfBushBookingInteger += 1; 
       bushBachLabel.Text = numberOfBushBookingInteger.ToString(); 
      } 
     } 
    } 

嗨,我希望看到這些整數以「0」開始,當我調試程序。然而,這些標籤我分配到這些整數總是從「1」靜態Int不從0開始

請幫助!

+6

的標籤賦予它們的值之前,務必遞增來,你是怎麼想到會發生? – cadrell0

+1

當然是。你增加1! numberOfBushBookingInteger + = 1; – gsharp

+2

這兩個if應該具有相同的條件嗎? – cadrell0

回答

3

切換這些線

numberOfBeachBookingInteger += 1; 
beachBachLabel.Text = numberOfBeachBookingInteger.ToString(); 

你顯示它之前,你要增加它的順序。你想要的是:

if (Session["beachBach"] != null) 
{ 
    beachBachLabel.Text = numberOfBeachBookingInteger.ToString(); 
    numberOfBeachBookingInteger += 1; 
} 
if (Session["beachBach"] != null) 
{ 
    bushBachLabel.Text = numberOfBushBookingInteger.ToString(); 
    numberOfBushBookingInteger += 1; 
} 
5

之前你寫的數字的標籤,你總是遞增它們:

numberOfBeachBookingInteger += 1; 

所以當然在標籤中的值是0從未

0

由於據我所知,在第一次顯示整數之前,您已經添加了1

numberOfBeachBookingInteger += 1; 
beachBachLabel.Text = numberOfBeachBookingInteger.ToString(); 

你可以定義你的整數作爲-1,他們應該顯示爲0

static int numberOfBeachBookingInteger = -1; 
static int numberOfBushBookingInteger = -1; 

另外,轉身你的邏輯

beachBachLabel.Text = numberOfBeachBookingInteger.ToString(); 
numberOfBeachBookingInteger += 1; 

帶來預期的效果,太。

2

您是否知道靜態變量在一個ASP.NET進程的所有會話共享?這意味着如果兩個用戶點擊該網站,他們將遞增靜態變量(他們不一定會連續爲每個用戶)?

這就是說,你可以嘗試只是增加值後創建標籤:

if (Session["beachBach"] != null) 
{ 
    bushBachLabel.Text = numberOfBushBookingInteger.ToString(); 
    numberOfBushBookingInteger += 1; 
} 
+0

一句話。不要使用它們在ASP.NET中可怕的靜態變量 – Jonesopolis

0
if (Session["beachBach"] != null) 
{ 
    beachBachLabel.Text = (numberOfBeachBookingInteger++).ToString(); 
}