2012-04-11 51 views
1

我正在ASP.net/C#中执行一个Web应用程序,其中在Page_Load事件中生成一个随机数(num1)。在网页中有一个按钮,每当用户点击该按钮时,就会生成一个新的随机数(num2),并在Button_Click事件中将其添加(+)到前一个。这将继续无限地进行(继续添加一个新的随机数到最后一个加法)。我尝试过使用会话,我没有找到明确的例子。我真的很感谢你的建议和帮助。在会话中添加两个数字

代码:

private static Random random = new Random(); 
     private int randomNumber(int min, int max) 
     { 
      return random.Next(min, max); 
     } 


     protected void Page_Load(object sender, EventArgs e) 
     { 
      number1 = randomNumber(1, 10); 
     } 

     protected void Button1_Click(object sender, EventArgs e) 
     { 
      int number2 = randomNumber(1, 10); 
      Session["number_x"] = number2; 
      number2 += number1; 
     } 

让上在Page_Load说产生的随机数是4。然后用户点击,其生成新的随机数可以说5.现在5应该被添加到4 = 9的按钮如果用户再次点击生成一个新数字的按钮5,那么现在会话应该有14等等。

谢谢。

+0

你能更清楚了吗?你想添加会话变量中的添加? – 2012-04-11 15:36:26

+0

@FrancisP请在我编辑代码后检查帖子 – 2012-04-11 15:52:58

回答

2

嗯,如果我正确地读你的问题,这应该工作:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    int number2 = randomNumber(1, 10); 
    if(Session["number_x"] != null) 
    { 
     int number1 = Int.Parse(Session["number_x"]); 
     Session["number_x"] = number1 + number2; 
    } 
    else 
    { 
     Session["number_x"] = number2; 
    } 
} 

基本上,你要检查,看看是否已经有一个在会话变量的值。

如果会话变量中已有内容,则需要将其解析为int,然后将其添加到新的随机数并将其存储回会话变量中。

如果在那里没有任何东西,你只需要存储新的随机数。

+0

请在我编辑代码后查看帖子 – 2012-04-11 15:53:33

+0

@JeT_BluE您的编辑并未真正改变我的答案,但感谢您添加细节。 – jadarnel27 2012-04-11 15:54:45

+0

但你已经声明了一个新的int数字1,那么它是如何链接到Page_Load中第一个生成的随机数的? – 2012-04-11 15:58:17

4

我想你想要做这样的事情:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    lock (Session.SyncRoot) 
    { 
     int numberInSession = (int) Session["number_x"]; 
     int number2 = randomNumber(1, 10); 
     int newNumber = numberInSession + number2; 
     Session["number_x"] = newNumber 
    } 
} 
+0

我同意这个解决方案,但我认为它应该是newNumber = numberInSession + number2; (也许这是一个错字) – Amaranth 2012-04-11 15:43:51

+0

是的是一个错字 - 固定。 – gbanfill 2012-04-11 15:49:10

+0

@ gbanfill请在我编辑过的代码后查看帖子 – 2012-04-11 15:53:10