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

    数据校验是两方面的,客户端校验虽然可以大大减少服务器回调次数提升用户体验.但是客户端校验并不是万能的,从原理上说,客户端返回的数据都是不可信任的,服务器端校验必不可少。(关于客户端校验的总结:从丑陋到优雅,让代码越变越美(客户端检测方法思考) )

   总的来说,服务器端代码也经历了相似的几个过程:

   以判断一个输入是否是可以转换成整数为例,开始大家都会续项强写:

Code1
string str = txtTest.Text;
if (!string.IsNullOrEmpty(str))
{
    
int? intResult = 0;
    
if (int.TryParse(str
out intResult))
    {
        
if(intResult>0 && intResult<100)
        {
            
//success
        }
        
else
        {
            ShowMessage(
"输入必须大于0小于100");
        }
    }
    
else
    {
        ShowMessage(
"不能格式化为Int类型");
    }
}
else
{
    ShowMessage(
"输入为空");
}

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

 

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

int类型检测子类:

 

Code10
public class vInt
v
{
    
int? intT = null;

    
public vInt(int? T)
    {
        intT 
= T;
        Status 
= true;
        Message 
= string.Empty;
    }

    
public vInt IsNotNullOrEmpty(string msg)
    {
        
if (intT == null)
        {
            Status 
=
 false;
            Message 
= msg;
        }

        
return this;
    }

    
public vInt Min(int minstring msg)
    {
        
if (!Status)
            
return this;

        
if (intT < min)
        {
            Status 
= false;
            Message 
= msg;
        }

        
return this;
    }

    
public vInt Max(int maxstring msg)
    {
        
if (!Status)
            
return this;

        
if (intT > max)
        {
            Status 
= false;
            Message 
= msg;
        }

        
return this;
    }
}

NET技术从丑陋到优雅,让代码越变越美续集之服务器端数据校验,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。