2011-08-16 71 views
0

我遇到的问题与requiredfieldvalidator控件不工作在ASP.net页面上。我已经正确地完成了该字段的属性,但是当我测试它时,即使有问题的字段为空,也可以发送回发。服务器端验证所需字段

所以我想做服务器端验证,而不是。什么是最好的方式来做到这一点?在导致回发的情况下?另外,如果我发现该字段是空白的,我如何让用户回到屏幕上,并将其他字段上的所有其他值保留原样并显示“此字段不能为空”的消息。

编辑:

这是代码:

<asp:TextBox ID="fName" TabIndex="1" runat="server" Width="221px" CausesValidation="True"></asp:TextBox> 
<asp:RequiredFieldValidator ID="FNameRequiredFieldValidator" runat="server" 
     ControlToValidate="fName" InitialValue="" ErrorMessage="Filter Name cannot be blank." 
     ToolTip="Filter Name cannot be blank.">*</asp:RequiredFieldValidator> 

回答

0

您可以发布关于验证和文本框来验证代码的HTML部分。听起来就像你错过了验证器的ControlToValidate属性。您还可以使用页面类的IsValid属性来测试通过的页面验证。

此功能完全正常工作。

<asp:TextBox ID="TextBox1" runat="server" />; 

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="TextBox1" runat="server" ErrorMessage="*" /> 

<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> 
0

首先,发布您的requiredfieldvalidator的代码,因为您明确地做了某些不正确的事情。

但是,检查客户端和服务器端是很好的,所以我会回答你的其他问题。

我通常会在回发的事件处理程序中检查有效性。您可以在其中设置标签的值以指示失败。由于这是回传,因此所有字段中的值都应保持原样。

1

尝试从验证器的默认值中删除TextBoxInvalidValue中的CauseValidation属性即可。

服务器端验证在Page_Load之后运行并控制事件。如果您正在使用所需的验证程序,则无需编写任何额外的代码。

Button_Click事件只是检查this.Page.IsValid标志。

0
Remove InitialValue="" 

只使用一个文本框的原因是,如果你有一些默认的文本中出现(如“输入一个值”,或类似)。