我遇到了一个问题,即在ASP.net页面上没有工作的requiredfieldvalidator控件。我已经正确完成了该字段的属性,但是当我测试它时,即使相关字段为空,也允许回发。
所以我想做服务器端验证。最好的方法是什么?如果导致回发?此外,如果我发现该字段为空白,如何让用户返回到屏幕,其中包含其他字段的所有其他值,并且显示“此字段不能为空”的消息。
编辑:
这是代码:
<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 :(得分:1)
尝试从CauseValidation
中移除TextBox
属性,并从验证程序默认值中InvalidValue
正常工作。
服务器端验证在Page_Load
之后运行并控制事件。如果您使用所需的验证器,则无需编写任何额外的代码。
在Button_Click
事件中,只需检查this.Page.IsValid
标记。
答案 1 :(得分: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" />
答案 2 :(得分:0)
首先,发布您的requiredfieldvalidator的代码,因为您显然做错了。
但是,检查客户端和服务器端都很好,所以我会回答你的其他问题。
我通常在回发的事件处理程序中检查有效性。您可以在那里设置Label的值以指示失败。所有字段中的值应保持原样,因为这是回发。
答案 3 :(得分:0)
Remove InitialValue=""
只有在文本框中使用它的理由是,如果你有一些默认文本(例如“输入一个值”,或者其他一些)。