【发布时间】:2012-08-15 16:52:59
【问题描述】:
我的页面是一个注册页面,用户在其中输入电子邮件地址和密码。这是我的点击事件:
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 以便显示错误,然后重新加载页面。只有当页面重新加载时,我的文本框中的所有数据都消失了。
有没有办法维护这些数据?
【问题讨论】:
-
您是否运行了任何代码来在页面上创建控件?文本框是如何添加到页面的?在 ASPX 中还是在后面的代码中?
-
我希望您在 Page_Load/Init/PreRender/Render 中执行某些操作,应该将其包裹在
!Page.IsPostBack -
你需要显示你的初始化事件,正如 J Torres 建议的那样,你可能正在那里擦除它。
-
@JayS - 我的控件在页面上,而我的 Page_Load 事件中没有任何内容
-
能否澄清这句话:
the error will show, and then the page reloads最有趣的部分是页面如何重新加载