我在C#windows web表单中使用简单的应用程序(在Visual C#2010 Express中设计)。
只有3个按钮和3个标签 - 当我点击按钮2时,我在int中有一天的数字(从0到6)然后我将这个数字切换为正确的标签名称。此外,当我单击按钮1或3时,我在所有标签中都有+1或-1天。
以下是一个例子:
private void button1_Click(object sender, EventArgs e)
{
NumberDay--;
if (NumberDay < 0) NumberDay = 6;
switch (NumberDay)
{
case 0:
label1.Text = "Saturday";
label2.Text = "Sunday";
label3.Text = "Monday";
break;
case 1:
label1.Text = "Sunday";
label2.Text = "Monday";
label3.Text = "Tuesday";
break;
case 2:
label1.Text = " Monday";
label2.Text = "Tuesday";
label3.Text = "Wednesday";
break;
case 3:
label1.Text = "Tuesday";
label2.Text = "Wednesday";
label3.Text = "Thursday";
break;
case 4:
label1.Text = "Wednesday";
label2.Text = "Thursday";
label3.Text = "Friday";
break;
case 5:
label1.Text = "Thursday";
label2.Text = "Friday";
label3.Text = "Saturday";
break;
case 6:
label1.Text = "Friday";
label2.Text = "Saturday";
label3.Text = "Sunday";
break;
}
}
private void button2_Click(object sender, EventArgs e)
{
button1.Enabled = button3.Enabled = true;
DateTime today = DateTime.Now;
NumberDay = (int)today.DayOfWeek;
switch (NumerDnia)
{
case 0:
label1.Text = "Saturday";
label2.Text = "Sunday";
label3.Text = "Monday";
break;
case 1:
label1.Text = "Sunday";
label2.Text = "Monday";
label3.Text = "Tuesday";
break;
case 2:
label1.Text = " Monday";
label2.Text = "Tuesday";
label3.Text = "Wednesday";
break;
case 3:
label1.Text = "Tuesday";
label2.Text = "Wednesday";
label3.Text = "Thursday";
break;
case 4:
label1.Text = "Wednesday";
label2.Text = "Thursday";
label3.Text = "Friday";
break;
case 5:
label1.Text = "Thursday";
label2.Text = "Friday";
label3.Text = "Saturday";
break;
case 6:
label1.Text = "Friday";
label2.Text = "Saturday";
label3.Text = "Sunday";
break;
}
}
private void button3_Click(object sender, EventArgs e)
{
NumberDay++;
if (NumberDay > 6) NumberDay = 0;
switch (NumberDay)
{
case 0:
label1.Text = "Saturday";
label2.Text = "Sunday";
label3.Text = "Monday";
break;
case 1:
label1.Text = "Sunday";
label2.Text = "Monday";
label3.Text = "Tuesday";
break;
case 2:
label1.Text = " Monday";
label2.Text = "Tuesday";
label3.Text = "Wednesday";
break;
case 3:
label1.Text = "Tuesday";
label2.Text = "Wednesday";
label3.Text = "Thursday";
break;
case 4:
label1.Text = "Wednesday";
label2.Text = "Thursday";
label3.Text = "Friday";
break;
case 5:
label1.Text = "Thursday";
label2.Text = "Friday";
label3.Text = "Saturday";
break;
case 6:
label1.Text = "Friday";
label2.Text = "Saturday";
label3.Text = "Sunday";
break;
}
}
在普通的C#应用程序中,一切正常。当我尝试在asp.net(Visual Express 2012 for Veb)中做同样的事情时,我遇到了一些麻烦:
当我点击按钮2时,一切都很好。当我按下按钮1/3 ONCE时,我在所有标签上都有错误的一天(或当我什么都没有发生时)
当我再次按下按钮时,没有任何事情发生 - 每次点击按钮时页面都没有重新加载(?),标签没有改变。
有人能帮助我吗?
答案 0 :(得分:0)
如果您刚刚在页面级别声明了变量“NumberDay”,就像这样
int NumberDay;
这就是为什么它没有保持其价值,因为NumberDay会在每个帖子中重置。你可以使用ViewState这样做
private void button1_Click(object sender, EventArgs e)
{
NumberDay = ViewState["VS_NumberDay"] != null ? Convert.ToInt32(ViewState["VS_NumberDay"]) : 0;
NumberDay--;
if (NumberDay < 0) NumberDay = 6;
ViewState["VS_NumberDay"] = NumberDay;
switch (NumberDay)
{
case 0:
label1.Text = "Saturday";
label2.Text = "Sunday";
label3.Text = "Monday";
break;
case 1:
label1.Text = "Sunday";
label2.Text = "Monday";
label3.Text = "Tuesday";
break;
case 2:
label1.Text = " Monday";
label2.Text = "Tuesday";
label3.Text = "Wednesday";
break;
case 3:
label1.Text = "Tuesday";
label2.Text = "Wednesday";
label3.Text = "Thursday";
break;
case 4:
label1.Text = "Wednesday";
label2.Text = "Thursday";
label3.Text = "Friday";
break;
case 5:
label1.Text = "Thursday";
label2.Text = "Friday";
label3.Text = "Saturday";
break;
case 6:
label1.Text = "Friday";
label2.Text = "Saturday";
label3.Text = "Sunday";
break;
}
}
private void button2_Click(object sender, EventArgs e)
{
button1.Enabled = button3.Enabled = true;
DateTime today = DateTime.Now;
NumberDay = (int)today.DayOfWeek;
ViewState["VS_NumberDay"] = NumberDay;
switch (NumerDnia)
{
case 0:
label1.Text = "Saturday";
label2.Text = "Sunday";
label3.Text = "Monday";
break;
case 1:
label1.Text = "Sunday";
label2.Text = "Monday";
label3.Text = "Tuesday";
break;
case 2:
label1.Text = " Monday";
label2.Text = "Tuesday";
label3.Text = "Wednesday";
break;
case 3:
label1.Text = "Tuesday";
label2.Text = "Wednesday";
label3.Text = "Thursday";
break;
case 4:
label1.Text = "Wednesday";
label2.Text = "Thursday";
label3.Text = "Friday";
break;
case 5:
label1.Text = "Thursday";
label2.Text = "Friday";
label3.Text = "Saturday";
break;
case 6:
label1.Text = "Friday";
label2.Text = "Saturday";
label3.Text = "Sunday";
break;
}
}
private void button3_Click(object sender, EventArgs e)
{
NumberDay = ViewState["VS_NumberDay"] != null ? Convert.ToInt32(ViewState["VS_NumberDay"]) : 0;
NumberDay++;
if (NumberDay > 6) NumberDay = 0;
ViewState["VS_NumberDay"] = NumberDay;
switch (NumberDay)
{
case 0:
label1.Text = "Saturday";
label2.Text = "Sunday";
label3.Text = "Monday";
break;
case 1:
label1.Text = "Sunday";
label2.Text = "Monday";
label3.Text = "Tuesday";
break;
case 2:
label1.Text = " Monday";
label2.Text = "Tuesday";
label3.Text = "Wednesday";
break;
case 3:
label1.Text = "Tuesday";
label2.Text = "Wednesday";
label3.Text = "Thursday";
break;
case 4:
label1.Text = "Wednesday";
label2.Text = "Thursday";
label3.Text = "Friday";
break;
case 5:
label1.Text = "Thursday";
label2.Text = "Friday";
label3.Text = "Saturday";
break;
case 6:
label1.Text = "Friday";
label2.Text = "Saturday";
label3.Text = "Sunday";
break;
}
}