我需要做一个基本的网页(作业)
用户需要在文本框中输入数字。在每个号码后,他需要按“输入号码”按钮。
在几个数字后,他需要按一个不同的按钮来显示他的号码和一些计算。
我无法使用数组(作业限制)。
问题是每次用户按“输入数字”后,变量重置。
我能做什么?
这是代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication1
{
public partial class WebForm1 : System.Web.UI.Page
{
int totalSum=0;
int mulOdd=1;
int small=0;
int big=0;
float avg=0;
int pairsum=0;
int counter = 0;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
int t;
counter++;
t = Convert.ToInt16(TextBox1.Text);
totalSum = totalSum + t;
avg = totalSum / counter;
int odd = t % 2;
if (odd > 0)
{
mulOdd = mulOdd * t;
}
else
{
pairsum = pairsum + t;
}
if (t < small)
{
small = t;
}
if (t > big)
{
big = t;
}
TextBox1.Text = " ";`enter code here`
Label1.Text = Convert.ToString(counter);
}
protected void Button2_Click(object sender, EventArgs e)
{
Label1.Text = "total Sum" + Convert.ToString(totalSum);
}
}
}
谢谢。
答案 0 :(得分:2)
您需要将变量保存在状态中。有几种方法可以传递变量
[1] Cookies(很少用于此)
[2]会话(适合在不同用户的页面之间存储)
[3] ViewState(为用户保存相同页面)
[4]查询字符串(在页面之间传递)
阅读有关这些的内容,这应该可以解决问题。如果我错过了一些,请原谅我。
答案 1 :(得分:0)
您需要了解page life cycle和state management,特别是view state。
答案 2 :(得分:0)
在不知道你的任务条件的情况下很难提供帮助,但是一个可用的方法是在页面上有一个隐藏字段(webusercontrol)来保存字符串。每次单击该按钮时,将数字的字符串表示形式附加到该控件的值,确保使用符号(逗号,#,|,将真正做任何事情)分隔值。然后在过程中的任何时候,您都可以获得该控件的值,将其拆分为角色,并计算您需要计算的任何内容。
由于这被确定为家庭作业,我不会发布代码,但这个过程应该非常简单。
答案 3 :(得分:0)
在页面加载事件中,检查Page.IsPostback
属性。如果为true,则根据服务器控件HTML标记中的用户输入重置变量。
阅读@Oded提供的链接。页面生命周期是一个非常重要的主题。
答案 4 :(得分:0)
您可以扩展到所有变量的一些指示......
删除所有这些变量的全局声明,您不需要为它们设置全局范围:
int totalSum=0;
int mulOdd=1;
int small=0;
int big=0;
float avg=0;
int pairsum=0;
int counter = 0;
在Button1_Click
上totalSum
存储:
ViewState["Sum"] = Convert.ToInt16(string.IsNullOrEmpty(ViewState["Sum"])?"0":ViewState["Sum"].ToString() )+ Convert.ToInt16(TextBox1.Text);
最后,在Button_Click2
上执行:
Label1.Text = "total Sum" + Convert.ToString(string.IsNullOrEmpty(ViewState["Sum"])?"0":ViewState["Sum"].ToString());