0

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

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

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

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

我的问题是,当我提交表单时,它显示“需要移动字段”。但是移动领域没有用[Required]属性装饰。那么它如何根据需要显示?

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

4

3 回答 3

0

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

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

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

@model yourModelName
于 2012-12-29T17:03:04.077 回答
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);
       }
    }

希望能帮助到你

于 2013-01-02T09:02:06.003 回答
-1

您可以使用以下简单的 jQuery 轻松完成此操作。

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

请尝试让我们知道这是否适合您。

谢谢

于 2013-01-17T12:43:20.463 回答