首页 > 解决方案 > 标签值在我将其分配给对象时发生变化

问题描述

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

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 的值不同

标签: c#htmlasp.net

解决方案


当您单击按钮时,您会将页面发送回服务器,以便您的Button1_Click事件处理程序可以处理按钮单击事件。

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

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

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

推荐阅读