【发布时间】:2016-01-29 15:23:57
【问题描述】:
(使用 ASP.NET Web 窗体。Microsoft .NET Framework 版本:4.0.30319,ASP.NET 版本:4.0.30319.34274)
我有一个 asp:TextBox 字段,该字段带有RequiredFieldValidator:
<asp:TextBox
runat="server"
ID="MyTextBox" />
<asp:RequiredFieldValidator
runat="server"
ID="RequiredUserName"
ControlToValidate="MyTextBox"
ErrorMessage="MyTextBox is required"
Display="None" />
当用户在页面上提交表单时,我会对其进行验证,然后清除表单,以便他们的用户可以再次使用该表单。 Page_Load 后面的代码如下:
if (Page.IsPostBack)
{
Page.Validate();
if (Page.IsValid)
{
SaveFormSubmissionToDatabase();
MyTextBox.Text = "";
}
}
所以,我验证了所有内容,Page.IsValid 为真,我保存了用户表单数据,然后尝试清除表单以供用户再次填写。但是由于表单被清除,RequiredFieldValid 会显示它的错误消息,即使我已经运行了Page.Validate() 并且没有再次运行它。
为什么会这样?我可以做些什么来避免在清除表单后显示此错误消息?更一般地说,为什么这个RequiredFieldValidator 会再次运行?
我应该注意到错误消息实际上显示在asp:ValidationSummary 控件中。
(我认为可能是客户端验证触发了正在显示的错误消息,所以我在RequiredFieldValidator 中设置了EnableClientScript="false",但这并没有改变任何东西)
我已经研究了这个问题,发现其他人也有同样的问题,但没有解决方案。 This question,例如。建议的解决方案是重定向到同一页面,这在我的用例中不起作用,因为我需要显示有关刚刚提交的表单的一些信息,包括成功消息,如果我重定向,该信息将丢失到同一页面。
【问题讨论】:
-
清除表单时的错误可以删除吗?这是一种解决方法
-
@erikscandola,我可以,但我想了解错误的来源,看看是否有其他解决方案,然后再诉诸类似的方法。