标签值在我分配给n个对象时会发生变化

时间:2019-06-10 08:15:30

标签: c# html asp.net

我给标签分配了一个随机数,然后当我按网站上的按钮时,它将调用标签并将其分配给一个对象,标签显示的内容和分配给该对象的对象是两个不同的数字

html

<td><asp:Label ID="Ucodelbl" runat="server" Text="Label" Font- 
Size="Large"></asp:Label></td>

<td colspan="2"><asp:Button ID="Button1" runat="server" Text="Register" 
OnClick="Button1_Click" /></td>

c#

protected void Page_Load(object sender, EventArgs e)
{
    Random rnd = new Random();
    Ucodelbl.Text = rnd.Next(0, 10000).ToString();
}

protected void Button1_Click(object sender, EventArgs e)
{
    u.Ucode = Ucodelbl.Text;
    u.Upass = Upasstxt.Text;
    u.Uname = Unametxt.Text;
    if (pic.HasFile)
    {
        pic.SaveAs(Server.MapPath("mypics/") + pic.FileName);
        u.Upic = pic.FileName;
    }
    s.registerUser(u);
    Response.Redirect("Login.aspx");
}

现在我遇到的问题是我在Page_Load中为Ucodelbl分配了一个随机数

然后在Button1_Click中,我尝试将其分配给u.Ucode,但是当我加载网站时,它在页面本身上表示的值与插入到u.Ucode中的那个值不同

1 个答案:

答案 0 :(得分:0)

单击按钮时,会将页面重新发布到服务器,以便可以由Button1_Click事件处理程序处理按钮单击事件。

问题是,每次页面加载时,您都在运行Ucodelbl.Text分配...这意味着您在第一次加载页面时(如预期的那样)会重新获得一个新的随机数,然后再次 ,当您单击按钮时。

要阻止这种情况发生,您需要使用基于Page.IsPostBack属性的if语句来包装它...

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        Random rnd = new Random();
        Ucodelbl.Text = rnd.Next(0, 10000).ToString();
    }
}