使正则表达式字段可选,在MVC 4中显示为必填字段

时间:2012-12-29 05:49:08

标签: regex asp.net-mvc-4 data-annotations

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

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

[RegularExpression(@"[0-9]{10}", ErrorMessage = "Mobile Number is Not Valid")]
public string Mobile { get; set; }

根据上述申请要求,字段不是强制性的,但如果用户插入,则需要验证手机号码。

我的问题是,当我提交表单时,它会显示“需要移动字段”。但移动字段未使用[Required]属性进行装饰。那么它如何显示所需?

可能是什么原因? 怎么解决?

3 个答案:

答案 0 :(得分:0)

在您的项目中,有一个文件夹“views”,您可以使用所需的控件创建视图。 应该有类似的东西:

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

为了使regularExpression正常工作。 如果你已经这样做,另一个问题可能是你的模型。 在视图的顶部,您应该通过以下方式添加模型:

@model yourModelName

答案 1 :(得分:0)

由于您未在控制器中发布任何代码,因此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);
       }
    }

希望有所帮助

答案 2 :(得分:0)

您可以使用以下简单的jQuery轻松完成..

//Remove Required field validation on pin and mobile number
    $(document).ready(function () {
        $("#Mobile").removeAttr("data-val");
    });

请试着让我们知道这是否适合你。

由于