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 以便显示错误,然后重新加载页面。只有当页面重新加载时,我的文本框中的所有数据都消失了。

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

4

1 回答 1

0

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

if (!IsPostBack)
{
  //populate form items
}
else //this is a post back
{
  //do nothing
}
于 2012-08-15T17:01:42.940 回答