ASP.NET 使用正则表达式的 C# 客户端和服务器端验证
ASP.NET C# client-side & server-side validation with regular expressions
我有一个非常简单的 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 的新手,我开始觉得自己在与它作斗争。我不想与之抗争。我想使用可用的工具来执行非常标准的服务器端验证,我只是不确定将正则表达式放在哪里。
有人能帮忙吗?
谢谢
Web 表单验证器自动添加客户端和服务器端代码以涵盖这两个基础。对于您的 RequiredFieldValidator,它只是检查客户端上是否存在该值,如果您在触发 Page_Load 时也调用 "Page.IsValid",它将在服务器端执行此操作。
你追求的是"RegularExpressionValidator"。您可以在页面上使用一个或两个,具体取决于您要实现的目标。
这是一个很好的例子:https://msdn.microsoft.com/en-us/library/ff650303.aspx
您可以编写自己的验证器、客户端和服务器端。查看
CustomValidator
示例:
<asp:CustomValidator runat="server" id="CustomValidator" ValidateEmptyText="false" OnServerValidate="customValidation_event" ClientValidationFunction="customValidation_client" />
并在您的 code-behind 中添加 javascript 函数和验证方法。
我有一个非常简单的 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 的新手,我开始觉得自己在与它作斗争。我不想与之抗争。我想使用可用的工具来执行非常标准的服务器端验证,我只是不确定将正则表达式放在哪里。
有人能帮忙吗?
谢谢
Web 表单验证器自动添加客户端和服务器端代码以涵盖这两个基础。对于您的 RequiredFieldValidator,它只是检查客户端上是否存在该值,如果您在触发 Page_Load 时也调用 "Page.IsValid",它将在服务器端执行此操作。
你追求的是"RegularExpressionValidator"。您可以在页面上使用一个或两个,具体取决于您要实现的目标。
这是一个很好的例子:https://msdn.microsoft.com/en-us/library/ff650303.aspx
您可以编写自己的验证器、客户端和服务器端。查看 CustomValidator
示例:
<asp:CustomValidator runat="server" id="CustomValidator" ValidateEmptyText="false" OnServerValidate="customValidation_event" ClientValidationFunction="customValidation_client" />
并在您的 code-behind 中添加 javascript 函数和验证方法。