您的位置:知识库 » .NET技术

从丑陋到优雅,让代码越变越美续集之服务器端数据校验

作者: KenBlove  来源: 博客园  发布时间: 2009-04-02 11:31  阅读: 1907 次  推荐: 0   原文链接   [收藏]  

 返回info是因为我们在后台代码中,往往需要根据检测结果做其他业务方面的处理,如果你 不需要返回信息,并不想单独在外边写ShowMessage函数,可以在vInfo里面增加一个ShowMessage函数,让贫血的实体类不在贫血, 实现像下面这样看起来更优雅的检测:

 

Code7
vInfo info = vHelper.StartVerify (10)
    .IsNotNullOrEmpty(
"输入 为空")
    .Min(
0
"输入小于0")
    .Max(
100
"输入大于100")
    .EndVerify()
    .ShowMessage ();

  当然,不写在实体类,写在我们的检测基类中也可以.不过,ShowMessage的方式往往涉及 具体业务逻辑,个人认为还是放到外层比较合适.

  废话不说了.先看看我们是如何实现这个检测的,我们先定义个检测基 类:

Code8
public class v
{
    
protected bool Status;
    
protected string Message;

    
public vInfo EndVerify()
     {
        vInfo info 
= new vInfo ();
        info.Status 
= Status;
        info.Message 
=
 Message;
        
return info;
    }
}

  基类只有一个 EndVerify(),这个函数用来返回具体检测结果信息.然后,我们根据各种检测类型构建不同的检测子类.校验不是一个类在战斗,这一刻, 校验被工厂模式灵魂附体.....成功了,校验成功了,成功不是靠一个类实现的,他不是一个类....(sorry,扯远了..^_^)

  String类型 检测子类:

Code9
public class vString
v
{
    
string stringT = null;

    
public vString(string T)
     {
        stringT 
= T;
        Status 
= true;
        Message 
= string.Empty;
    }

    
public vString IsNotNullOrEmpty(string msg)
    {
        
if (string.IsNullOrEmpty(stringT))
         {
            Status 
=
 false;
            Message 
= msg;
        }

        
return this;
    }

    
public vString IsInt (string msg)
     {
        
if  (!Status)
            
return this;

        
int intTemp = 0;
        Status 
= int.TryParse(stringT out intTemp);
        
if (!Status)
            Message 
= msg;

        
return this;
    }

    
public vString Min (int min string msg)
    {
        
if (!Status)
            
return this;

        
if  (int.Parse(stringT) < min)
         {
            Status 
= false;
            Message 
= msg;
        }

        
return this;
    }

    
public vString Max (int max string msg)
    {
        
if (!Status)
            
return this;

        
if  (int.Parse(stringT) > max)
         {
            Status 
= false;
            Message 
= msg;
        }

        
return this;
    }
}

 

0
0
标签:ASP.NET 验证

.NET技术热门文章

    .NET技术最新文章

      最新新闻

        热门新闻