Asp.net mvc asp.net mvc 1.0验证

Asp.net mvc asp.net mvc 1.0验证,asp.net-mvc,validation,Asp.net Mvc,Validation,我在asp.NETMVC应用程序中工作,该应用程序是在MVC1中完成的。。。因此,验证是按照以下步骤进行的: 我刚刚定义了一个这样的规则 public bool Is_CellPhone(string val) { Regex celular = new Regex("^04[12][246][0-9]{7}$"); return celular.IsMatch(val); } 在我的GetRule

我在asp.NETMVC应用程序中工作,该应用程序是在MVC1中完成的。。。因此,验证是按照以下步骤进行的:

我刚刚定义了一个这样的规则

public bool Is_CellPhone(string val)        
        {
            Regex celular = new Regex("^04[12][246][0-9]{7}$");
            return celular.IsMatch(val);
        }
在我的GetRuleValidations中,我这样做

    if (!Is_CellPhone(Celular))
                    yield return new RuleViolation("El celular no cumple el formato", 

"Celular");

问题是。。手机不是必需的,因此当用户不提交该值时,验证方法仍会运行,并返回一个错误,因为空字符串。。。如何正确防止此错误?

如果字符串为null或空,则返回true:

public bool Is_CellPhone(string val)        
        {
            if (string.IsNullOrEmpty(val)) { return true; }
            Regex celular = new Regex("^04[12][246][0-9]{7}$");
            return celular.IsMatch(val);
        }

我想你也可以在正则表达式中涵盖这一点,但我对正则表达式很差劲,所以我不会假装在正则表达式中给出建议。

我想这是可行的,但是你需要对每个自定义规则都这样做。。。这是毫无意义的。。规则验证应仅在提交值时运行