2013-08-26 47 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(); 
}