【问题标题】:Simple Windows web form application to asp.net application简单的 Windows Web 表单应用程序到 asp.net 应用程序
【发布时间】:2014-01-29 11:09:10
【问题描述】:

我有一个简单的 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)中做同样的事情时,我遇到了一些麻烦:

  1. 当我单击按钮 2 时,一切正常。当我按下按钮 1/3 ONCE 时,我在所有标签中都有错误的日期(或者当我按下时没有发生任何事情)

  2. 当我多次按下按钮时,没有任何反应 - 每次单击按钮时页面都没有重新加载 (?),标签没有改变。

有人可以帮助我吗?

【问题讨论】:

  • 是 NumberDay 是页面级别的静态变量吗?
  • 你是 Asp.net 的新手,所以首先谷歌 Asp.net 的基础知识。 Asp.net 和 Windows 应用程序在状态方面完全不同
  • @user2456849:请同时提供 ASPX 代码,以便我们为您提供帮助。
  • int NumberDay 在 protected void Page_Load 之前声明
  • 在 asp.net 中的 NumberDay 在每个回帖中重置

标签: c# asp.net webforms label buttonclick


【解决方案1】:

如果您刚刚像这样在页面级别声明了变量“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;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-14
    • 2014-05-17
    • 1970-01-01
    • 2023-04-06
    • 2012-06-21
    • 2012-11-14
    • 1970-01-01
    • 2011-02-09
    相关资源
    最近更新 更多