【问题标题】:Label changes during page load页面加载期间的标签更改
【发布时间】:2025-12-13 17:10:01
【问题描述】:

我正在尝试将我的密码值捕获到Label4位字母1个小写字母

这是我添加数字和数字的方法

public void SaveTransactionID()
{
    string password = lblStart.Text + lblStop.Text;
    lblPassword.Text = password;
}

生成器:

private void GenRandomNumber()
{
    Random generator = new Random();
    String r = generator.Next(0, 10000).ToString("D4");
    lblStart.Text = r;
}

//Generate Random Letter
static class RandomLetter
{
    static Random _random = new Random();
    public static char GetLetter()
    {
        // This method returns a random lowercase letter.
        // ... Between 'a' and 'z' inclusize.
        int num = _random.Next(0, 26); // Zero to 25
        char let = (char)('a' + num);
        return let;
    }
}

我的页面加载

protected void Page_Load(object sender, EventArgs e)
{
    char lowerCase;
    lowerCase = Convert.ToChar(RandomLetter.GetLetter());
    lblStop.Text = lowerCase.ToString();
    GenRandomNumber();
}

我知道我的密码会在每次页面加载时更改。这就是为什么我试图将它保存在我的Label 上,以便在页面再次加载时捕获密码。但事情是我的SaveTransactonId() 在页面加载期间也会发生变化。即使页面加载,我如何存储我的密码值?

【问题讨论】:

标签: c# asp.net pageload


【解决方案1】:

这是一个例子:

protected void Page_Load(object sender, EventArgs e)
    {
       if (!IsPostBack)
        {
           char lowerCase;
           lowerCase = Convert.ToChar(RandomLetter.GetLetter());
           lblStop.Text = lowerCase.ToString();

           GenRandomNumber();
        }
    }

这会解决你的问题。

编辑:

这是short explanationIsPostBack = true 或 false 时发生的情况。对于开发和调试代码的单台计算机,“客户端”是您的浏览器,“服务器”是您的计算机。 (在链接的文章中,问题不是“什么是 IsPostBack?”正确的问题是“什么是 PostBack?”有一个更好、更复杂的图表;我找不到它,但这可以。)

PostBack 是将 ASP.NET 页面提交给服务器进行处理的过程的名称。如果(例如)要针对某些来源检查页面的某些凭据(例如验证数据库的用户名和密码),则执行回发。这是客户端无法自行完成的事情,因此必须通过用户交互将这些详细信息“回传”到服务器。

回发是从客户端(浏览器)到服务器然后返回客户端的往返。这使您的页面能够通过服务器上的 asp 引擎和任何要更新的动态内容。

有关回发问题的更详细答案,see here

这里是description的ASP.NET(web-)页面生命周期概述,其中一些涉及PostBack。

【讨论】:

  • 虽然这个答案在技术上是正确的,但通过对建议代码的解释会大大改进。
  • 很好的解释! +1!谢谢!
【解决方案2】:

在 if(!Page.IsPostBack) 中编写你的代码{//把你的逻辑放在这里。}

你可以将你的值保存在 Session["sessionKey"] = value;

你可以通过检查 session is not null 来检索它

if(Session["sessionKey"] !=null);

lblPassword.Text = 会话["sessionKey"];

【讨论】:

    【解决方案3】:

    您可以将值存储在Session 变量中;您还可以通过Page.IsPostBack 属性控制在初始页面加载与后续页面重新加载(每个会话)时在Page_Load 中运行的内容。

    【讨论】: