使用正则表达式的 ASP.NET C# 客户端和服务器端验证

Posted

技术标签:

【中文标题】使用正则表达式的 ASP.NET C# 客户端和服务器端验证【英文标题】:ASP.NET C# client-side & server-side validation with regular expressions 【发布时间】:2018-09-14 06:28:24 【问题描述】:

我有一个非常简单的 aspx 表单,它收集姓名、地址、电子邮件等,我正在尝试使用 asp 控件进行服务器端验证。它正在工作(我认为?)并且我知道我需要在服务器端进行,但我不确定将正则表达式放在哪里以满足每个字段的实际要求。

这里以我的一个字段为例:

<div class="form-group">
     <asp:Label runat="server" AssociatedControlID="FirstName" CssClass="col-md-2 control-label">* First Name</asp:Label>
     <div class="col-md-3">
          <asp:TextBox runat="server" ID="FirstName" CssClass="form-control" />
          <asp:RequiredFieldValidator runat="server" ControlToValidate="FirstName"
               CssClass="text-danger" ErrorMessage="First Name field is required." Display="Dynamic" />
     </div>
</div>

我一直在使用asp:RequiredFieldValidator,并且客户端验证部分运行良好。该表单知道用户何时在我的必填字段中输入了某些内容,并在将任何内容发送到服务器之前相应地通知他们。我已经通过在我的页面上放置一个名为“有效”的标签来测试它,然后将它放入我的提交按钮点击事件中:

if(Page.IsValid)

     valid.Text = "it's working";

当我填写必填字段时,我的标签确实出现并说它正在工作。但是,根据定义,asp:RequiredFieldValidator 仅指示我的必填字段是否具有某种值。它不会检查用户输入的格式。

我确实需要指定某些字段,并且我喜欢客户端验证部分的工作方式。但我还需要进行服务器端验证,并在混合中的某处使用正则表达式,以确保他们实际上在电子邮件字段中输入了电子邮件地址,并在邮政编码字段等中实际输入了数字。

我对 ASP.NET 还很陌生,并且开始觉得我在与它作斗争。我不想与之抗争。我想使用可用的工具来进行非常标准的服务器端验证,我只是不确定将正则表达式放在哪里。

谁能帮忙?

谢谢

【问题讨论】:

【参考方案1】:

Web 表单验证器自动添加客户端和服务器端代码以覆盖这两个基础。对于您的RequiredFieldValidator,它只是检查客户端上是否存在该值,如果您在触发Page_Load时还调用“Page.IsValid”,它将在服务器端这样做。

您所追求的是“RegularExpressionValidator”。您可以在页面上使用一种或两种,具体取决于您要实现的目标。

这是一个很好的例子:https://msdn.microsoft.com/en-us/library/ff650303.aspx

【讨论】:

感谢您的回复和链接,正则表达式表是完美的。我可以同时使用RequiredFieldValidator 和RegularExpressionValidator 吗?或者我怎样才能在后面的代码中做正则表达式的东西? 如果您愿意,您可以同时使用两者,但在某些情况下您可能会收到来自两者的消息。验证器上有一个属性,您可以设置该属性,只要您在回发时调用 Page.IsValid 我仍在努力让它按我们想要的方式工作,你知道使它适用于服务器端和客户端的属性名称吗? 您只需将“ValidationExpression”设置为它应该触发的相关表达式?【参考方案2】:

您可以编写自己的验证器、客户端和服务器端。退房 CustomValidator

例子:

<asp:CustomValidator runat="server" id="CustomValidator" ValidateEmptyText="false" OnServerValidate="customValidation_event"  ClientValidationFunction="customValidation_client" />

并在您的代码隐藏中添加 javascript 函数和验证方法。

【讨论】:

以上是关于使用正则表达式的 ASP.NET C# 客户端和服务器端验证的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 正则表达式属性不适用于括号(文字)

asp.net怎么限制文本框输入的类型c#

ASP .NET MVC在每个字段级别禁用客户端验证

ASP.NET 电子邮件验证器正则表达式

为啥我的正则表达式在 ASP.NET 中不起作用

Asp .NET MVC 正则表达式