我正在制作第一个真正的 ASP 页面,我需要在 14 个不同的文本框字段中验证一天中的某个时间(既存在一个值,又确保该值最终在 0:00:00-23 之间: 59:59)。我认为编写一个验证函数然后在某个时刻(即当用户点击“提交”或在 TextChanged 事件处理程序中)显式调用它会更容易,而不是添加 14 个自定义验证器或 14 个范围(或 RegEx)验证器和 14 个必填字段验证器。
我认为验证器的存在一定是有原因的,但是在这种情况下使用它们进行验证看起来比不使用它们要做更多的工作,而且我看不出任何优势来证明它的合理性。
ASP.NET 验证器是否有我没有看到的优势?在 ASP 标记中制作相同验证器的 14 个副本似乎不是一个好的解决方案。
最佳答案
经过一番思考,我对这种情况的最佳想法是一个 WebUserControl
,它将有一个 TextBox
和一个 CustomFieldValidator
或 必需的字段验证器
。然后只需将 WebUserControl
拖放到您的页面即可。这是一个使用 RequiredFieldValidator
的简单示例。
ASCX 文件(WebControl):
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="SelfValidationTextBox.ascx.cs" Inherits="SelfValidationTextBox" %>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="* Required Field"></asp:RequiredFieldValidator>
ASPX 文件:
<%@ Register Src="SelfValidationTextBox.ascx" TagName="SelfValidationTextBox" TagPrefix="uc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<uc1:SelfValidationTextBox ID="SelfValidationTextBox1" runat="server" />
<br />
<uc1:SelfValidationTextBox ID="SelfValidationTextBox2" runat="server" />
<br />
<uc1:SelfValidationTextBox ID="SelfValidationTextBox3" runat="server" />
<br />
<uc1:SelfValidationTextBox ID="SelfValidationTextBox4" runat="server" />
<br />
<uc1:SelfValidationTextBox ID="SelfValidationTextBox5" runat="server" />
<br />
<br />
<asp:Button ID="Button1" runat="server" Text="Click Me" />
</form>
</body>
</html>
我认为这将是一个很好的解决方法,您甚至可以按照您的建议使用 CustomFieldValidators,并且也可以使用此解决方案仅使用一个函数。
关于c# - 为什么使用 ASP.NET 验证器进行验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14047029/