c# - 为什么使用 ASP.NET 验证器进行验证?

标签 c# asp.net validation textbox

我正在制作第一个真正的 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,并且也可以使用此解决方案仅使用一个函数。

Result of using RequiredFieldValidators in a WebUserControl

关于c# - 为什么使用 ASP.NET 验证器进行验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14047029/

相关文章:

c# - 在 C# 中调用 javascript 函数

asp.net - onclientclick 和 postbackurl 的问题

javascript - 正则表达式正负十进制数,逗号分隔

validation - 在嵌套模型上验证之前

java - 当元素具有空值时如何接受 xsd vs xml 验证

c# - 流畅的接口(interface) : Avoid Excessive Parameters On Generic Types

c# - 是将 null 赋给变量强制释放内存或处置变量

c# - 转到实现的方法而不是接口(interface)

jquery - 415 不支持的媒体类型从 $.ajax 调用 WCF 服务

asp.net - 如何在我的 .NET Framework 4.5 应用程序/站点中使用 HttpClient?