1

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

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 中的文本框元素,value设置的input,它只是由于某种原因没有显示在页面上。

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

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

4

1 回答 1

1

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

如果您在页面标记中看到它,但它没有显示在浏览器中,那么在页面加载后某些东西正在改变它们。可能是Javascript。

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

于 2012-08-20T21:00:19.267 回答