2012-08-15 73 views
1

我的页面是注册页面,用户输入电子邮件地址和密码。这里是我的单击事件:回发后文本框丢失值

protected void btnRegister_Click(object sender, EventArgs e) 
{ 
    MembershipCreateStatus createStatus = MembershipCreateStatus.ProviderError; 

    MembershipUser user = Membership.CreateUser(txtUsername.Text, 
     txtPassword.Text, txtEmail.Text, null, null, true, out createStatus); 

    if (createStatus != MembershipCreateStatus.Success) 
    { 
     cvUser.IsValid = false; 
     cvUser.ErrorMessage = "Invalid"; 
    } 
    else 
     Response.Redirect("Home"); 
} 

这里是我的网页:

<asp:ValidationSummary ID="vs" runat="server" /> 

<asp:TextBox ID="txtUsername" runat="server" /> 
<asp:TextBox ID="txtEmail" runat="server" /> 
<asp:TextBox ID="txtPassword" runat="server" TextMode="Password" /> 

<asp:Button ID="btnRegister" runat="server" OnClick="btnRegister_Click" /> 
<asp:CustomValidator ID="cvUser" runat="server" ControlToValidate="txtEmail" /> 

cvUser是我的网页上一个自定义的验证,我使用,使该错误信息会出现在我的ValidationSummary

因此,当用户创建失败时会出现问题。我将cvUser.IsValid设置为false,以便显示错误,然后重新加载页面。只有当页面重新加载时,我的文本框中的所有数据都消失了。

有没有办法维护这些数据?

+1

您是否有任何代码正在运行以在页面上创建控件?如何将文本框添加到页面?在ASPX或代码背后? – 2012-08-15 16:54:33

+1

我希望你正在做一个Page_Load/Init/PreRender/Render,它应该被包裹在'!Page.IsPostBack' – 2012-08-15 16:57:34

+0

你需要显示你的初始化事件,正如J托雷斯所建议的那样,你可能正在擦除它。 – 2012-08-15 17:00:48

回答

0

回发后,需要手动重新填充表单项或确保其值不被覆盖。后者可以通过在Page_Load方法中放置任何表单填充代码来完成,但是可以用if(!IsPostBack){}块封装。

if (!IsPostBack) 
{ 
    //populate form items 
} 
else //this is a post back 
{ 
    //do nothing 
} 
相关问题