我给标签分配了一个随机数,然后当我按网站上的按钮时,它将调用标签并将其分配给一个对象,标签显示的内容和分配给该对象的对象是两个不同的数字
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中的那个值不同
答案 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();
}
}