Regex 使正则表达式字段成为可选字段,在MVC4中显示为必填字段
我正在使用ASP.NETMVC4。我在模型中使用数据注释进行验证 有一个字段名Mobile,使用下面的正则表达式进行验证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; } 根据应用要求,上述字段不是强制性的,但如果用户插入手机号码,则需要验证手机号码 我的问题是,当我提交表单时,它会显示“需要移动字段”。但是移动字段没
[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");
});