我想创建一个表单验证引擎,我将进一步自定义,但作为基础,我需要一些关于如何构建基础的指导。
表单字段可以是您的标准表单字段,如:
textbox
drop down list
checkboxes
etc.
因此,此验证引擎将获得表单字段类型的列表,然后 每个表单字段的一组规则。
例如:
假设您有一个文本框,该规则将应用于文本框,并且必须确保该值为“蓝色”或“123”(因此它可以是字符串或整数值)。
我正在寻找关于如何安排课程的方向。
要使用哪种设计模式?
public class Rule
{
public RuleType RuleType {get;set;}
public ComparisonType ComparisonType {get;set;}
}
public enum RuleType
{
TextBox,
DropDownList
}
public enum ComparisonType
{
Equal,
GreaterThan,
GreaterThanOrEqual,
LessThan,
LessThanOrEqual
}
这看起来是一个好的开始吗?
在Rule类中,我将如何设置表单字段必须具有的值。
即。假设comparisonType是'Equal',我必须说等于“Blue”或123.我不能有字符串属性,因为我还要比较整数或布尔值。
想法?
你会如何设计?
答案 0 :(得分:1)
基于属性的数据验证(DataAnnotations)是一个功能强大的模型,因为它很容易将验证应用于UI和业务对象层,并且具有高度可扩展性。
你没有陈述你的环境,但是如果你在这里使用MVC是一个很好的启动者:
http://www.asp.net/mvc/tutorials/validation-with-the-data-annotation-validators-cs
要了解有关创建自定义验证器的信息:
http://www.a2zdotnet.com/View.aspx?Id=182
要在Web表单中使用DataAnnotations,请查看此贡献的实现:
http://adventuresdotnet.blogspot.com/2009/08/aspnet-webforms-validation-with-data.html
答案 1 :(得分:0)
我会考虑使用lambdas /匿名方法,这可能会使您的验证更具可读性:
C# Lambda Expressions or Delegates as a Properties or Arguments
答案 2 :(得分:0)