ASP.NET 2.0中的服务器端验证

时间:2010-06-01 11:32:44

标签: asp.net .net regex validation server-side

我的应用程序是在带有C#的ASP.NET 2.0中。我有一个带有正则表达式^[0-9]*(\\,)?[0-9]?[0-9]?$的正则表达式验证器,现在我的客户端不希望在客户端进行此验证,而是在按钮单击即服务器端。

EX:我必须检查txtPrice文本框

的值

请告诉我如何在服务器端进行此正则表达式验证。

提前致谢。

4 个答案:

答案 0 :(得分:2)

您可以使用可以链接到服务器端事件的CustomValidator:

<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="CustomValidator" OnServerValidate="CustomValidator1_Validate"></asp:CustomValidator>

然后服务器端你可以验证输入

protected void CustomValidator1_Validate (object source, ServerValidateEventArgs argss)
{}

请记得点击提交按钮,然后单击

if(IsValid) {}

确保尊重所有验证器

答案 1 :(得分:1)

尝试将EnableClientScript="false"添加到验证程序。

答案 2 :(得分:1)

无论您是否还启用客户端验证,控件都将始终在服务器端进行验证。但是,您必须记得在接受回发之前检查Page.IsValid的值...

如前所述,您可以使用属性关闭客户端验证。

答案 3 :(得分:-1)

使用基于ValidatorBase的服务器端控件的客户端验证仅在PostBack上进行,即在任何服务器端按钮/链接按钮上进行。

所以你可以使用RegularExpressionValidator

<asp:TextBox runat="server" ID="txtPrice" />
<asp:RegularExpressionValidator runat="server" ControlToValidate="txtPrice" ValidationExpression="^[0-9]*(\\,)?[0-9]?[0-9]?$" ErrorMessage="Input is incorrect" />

您也可以使用CustomValidator

<asp:TextBox runat="server" ID="txtPrice" />
<asp:CustomValidator runat="server" ControlToValidate="txtPrice" ErrorMessage="Input is incorrect" OnServerValidate="CustomValidator1_ServerValidate" />

protected void CustomValidator1_ServerValidate(object sender, ServerValidateEventArgs e)
{
    // use e.Value to validate and set e.IsValid
    // it's different depending on control to validate.
    // for custom controls you can set it using ValidationPropertyAttribute
}