Regex 使正则表达式字段成为可选字段,在MVC4中显示为必填字段

Regex 使正则表达式字段成为可选字段,在MVC4中显示为必填字段,regex,asp.net-mvc-4,data-annotations,Regex,Asp.net Mvc 4,Data Annotations,我正在使用ASP.NETMVC4。我在模型中使用数据注释进行验证 有一个字段名Mobile,使用下面的正则表达式进行验证 [RegularExpression(@"[0-9]{10}", ErrorMessage = "Mobile Number is Not Valid")] public string Mobile { get; set; } 根据应用要求,上述字段不是强制性的,但如果用户插入手机号码,则需要验证手机号码 我的问题是,当我提交表单时,它会显示“需要移动字段”。但是移动字段没

我正在使用ASP.NETMVC4。我在模型中使用数据注释进行验证

有一个字段名Mobile,使用下面的正则表达式进行验证

[RegularExpression(@"[0-9]{10}", ErrorMessage = "Mobile Number is Not Valid")]
public string Mobile { get; set; }
根据应用要求,上述字段不是强制性的,但如果用户插入手机号码,则需要验证手机号码

我的问题是,当我提交表单时,它会显示“需要移动字段”。但是移动字段没有使用
[required]
属性装饰。那么它是如何按要求显示的呢

原因可能是什么?
如何解决

在您的项目中,有一个“视图”文件夹,您可以在其中使用所需的控件创建视图。 应该是这样的:

@Html.LabelFor(m => m.Mobile)<br />
@Html.TextBoxFor(m => m.Mobile)<br /> 

由于您没有在控制器中发布任何代码,
Index
被假定为控制器的操作,
MyModel
被假定为模型

在控制器中尝试以下代码:

 public ActionResult Index(MyModel model)
    {
       //This will check if `Mobile` is empty and remove the Mobile from validation if the field is empty
       if (collection.Get("Mobile") == "")  //Mobile is the name of the Mobile number field in view
       {
            ModelState.Remove("Mobile");
       }
       if(ModelState.IsValid){
       //do something
       }
       else{
             return View(model);
       }
    }

希望对您有所帮助

您可以使用以下简单的jQuery轻松完成此任务

//Remove Required field validation on pin and mobile number
    $(document).ready(function () {
        $("#Mobile").removeAttr("data-val");
    });
请尝试让我知道这是否对你有效


谢谢

数据库中的移动字段是否允许为空?。如果您试图将值存储到数据库中,但字段不允许为空,系统将抛出相同的错误。是,数据库中的移动字段允许为空。他要求使该字段仅验证输入,但仍然将其保留为可选。此方法似乎对我没有任何帮助。空字段仍然触发正则表达式验证。正则表达式验证似乎附带了
必需的
验证。没有办法防止这个看起来不像黑客的问题吗?
//Remove Required field validation on pin and mobile number
    $(document).ready(function () {
        $("#Mobile").removeAttr("data-val");
    });