【问题标题】:Issues with CustomValidator and losing TextBox dataCustomValidator 问题和丢失 TextBox 数据
【发布时间】:2012-08-15 21:34:06
【问题描述】:

我的页面是一个注册页面,用户在其中输入用户名、电子邮件地址和密码。这是我的代码:

protected void Page_Load(object sender, EventArgs e)
{
}

protected void btnRegister_Click(object sender, EventArgs e)
{
    if (!Page.IsValid)
        return;
}

protected void cvEmail_ServerValidate(object source, ServerValidateEventArgs args)
{
    args.IsValid = false;
}

这是我的页面:

<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="cvEmail" runat="server" ControlToValidate="txtEmail" 
    OnServerValidate="cvEmail_ServerValidate"
    ErrorMessage="Invalid Email" />

所以问题是如果自定义验证器失败,当页面重新加载我的错误消息时,我的文本框是空的。但奇怪的是,如果我检查 Firebug 中的文本框元素,inputvalue 已设置,但由于某种原因它没有显示在页面上。

我尝试在文本框和页面上将 EnableViewState 设置为 true,但没有帮助。

有人知道我做错了什么吗?

【问题讨论】:

  • 我刚刚在 .NET 4.0 的新项目中尝试了示例代码,没有任何问题。验证失败后,用户和电子邮件的值在客户端上可见。密码已被清除,但这是意料之中的,因为它是一项安全功能。
  • 是的,我也试过这个,它奏效了。在全新的页面中重试。

标签: c# asp.net validationsummary


【解决方案1】:

您是否打开了 JavaScript 验证?或者任何其他涉及这些领域的 JavaScript?

如果您在页面标记中看到它,但它没有显示在浏览器中,则说明页面加载后它们正在发生变化。可能是Javascript。

这也将支持问题 cmets 中发布的发现,即相同的代码在另一个项目中工作(在页面上不共享相同的 JavaScript)。

【讨论】:

  • 哈哈,是的,我是个白痴——有一些 JavaScript 导致了这个问题 :) 谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 2011-07-03
  • 2010-11-19
  • 2018-04-23
  • 2021-08-28
相关资源
最近更新 更多