页面加载期间的标签更改

Label changes during page load

我正在尝试将我的密码值捕获到 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() 在页面加载期间也会发生变化。如何在页面加载时存储我的密码值?

您可以将值存储在 Session variable; you can also control what runs in Page_Load on initial page load vs. subsequent page reloads (per session) via Page.IsPostBack 属性.

这是一个例子:

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 时发生的情况。对于开发调试代码的单机,"Client"就是你的浏览器,"Server"就是你的电脑。 (在链接的文章中,问题不是 "What is IsPostBack?" 正确的问题是 "What is PostBack?" 有一个更好、更复杂的图表;我找不到它,但这样就可以了。)

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

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

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

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

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

并且您可以在 Session["sessionKey"] = value;

中保存您的值

您可以通过检查会话是否为空来检索它

if(会话["sessionKey"] !=null);

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