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

时间:2018-04-04 15:46:20

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

我有一个非常直接的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,客户端验证部分工作正常。表单知道用户何时在我的必填字段中输入或未输入内容,并在向服务器发送任何内容之前相应地通知他们。我通过在我的页面上放置一个名为“valid”的标签进行测试,然后将其放入我的提交按钮点击事件中:

if(Page.IsValid)
{
     valid.Text = "it's working";
}

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

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

我对ASP.NET很新,并且开始感觉我正在与它抗争。我不想打它。我想使用可用的工具进行相当标准的服务器端验证,我只是不确定在哪里放置正则表达式。

有人可以帮忙吗?

由于

2 个答案:

答案 0 :(得分:1)

Web窗体验证程序自动添加客户端和服务器端代码以涵盖两个基础。对于RequiredFieldValidator,它只是检查客户端上是否存在该值,以及是否还要调用&#34; Page.IsValid&#34;当Page_Load被触发时,它将在服务器端执行此操作。

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

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

答案 1 :(得分:0)

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

示例:

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

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