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

ASP.NET C# client-side & server-side validation with regular expressions

提问人:Jay 提问时间:4/4/2018 更新时间:4/5/2018 访问量:3579

问:

我有一个非常简单的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 还很陌生,开始觉得自己在战斗。我不想与之抗争。我想使用可用的工具进行非常标准的服务器端验证,我只是不确定将正则表达式放在哪里。

谁能帮忙?

谢谢

C# asp.net 正则表达式 验证 服务器端

评论


答:

1赞 RNDThoughts 4/5/2018 #1

Web 窗体验证程序会自动添加客户端和服务器端代码,以涵盖这两个基础。对于 RequiredFieldValidator,它只是检查客户端上是否存在值,如果在触发Page_Load时也调用“Page.IsValid”,它将在服务器端执行此操作。

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

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

评论

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

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

例:

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

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