MVCvalidation仅在字符串字段上使RegularExpression成为数字
我在视图模型中有以下属性:
[Required] [MaxLength(12)] [MinLength(1)] [RegularExpression("[^0-9]", ErrorMessage = "UPRN must be numeric")] public string Uprn { get; set; }
无论Uprn
是一个string
,如果在页面提交的Uprn框中输入了除数字以外的任何内容,我想抛出validation错误。
有了上面的内容,我得到错误“UPRN必须是数字”,无论是字符串还是int
这里发生了什么?
正则表达式是错误的。 替换为:
[Required] [MaxLength(12)] [MinLength(1)] [RegularExpression("^[0-9]*$", ErrorMessage = "UPRN must be numeric")] public string Uprn { get; set; }
别忘了包括:
@Scripts.Render("~/bundles/jqueryval")
在您的jqueryvalidation视图中
或者你可以在regexp中进行长度validation:
[Required] [RegularExpression("^[0-9]{1,12}$", ErrorMessage = "...")] public string Uprn { get; set; }
这是正则表达式可视化:
Debuggex演示
RegEx应为^[0-9]*$
。
IE
该属性应如下所示:
[Required] [MaxLength(12)] [MinLength(1)] [RegularExpression("^[0-9]*$", ErrorMessage = "UPRN must be numeric")] public string Uprn { get; set; }
见工作示例 。
我确定你已经引用了jQuery,但确保jQueryvalidation并包含Microsoftvalidation脚本。
我建议你使用:
[RegularExpression("\d*", ErrorMessage = "UPRN must be numeric")]
*请注意,如果删除[必需]和[MinLength(1)],它将接受为空
或使用以下内容:
[RegularExpression("\d+", ErrorMessage = "UPRN must be numeric")]
只接受一个数字
你可以在这里测试你的正则表达式: https : //regex101.com/
- ASP.NET MVC3 RAZOR:从部分视图重定向
- Button Group of Radio Buttons没有设置任何带Bootstrap 3的活动按钮
- Ajax.beginform执行完全回发而不是部分回发
- 坚持要求的索赔
- 如果某个部分类inheritance自某个类,那么所有其他具有相同名称的部分类也应该inheritance相同的基类?
- 为什么在MVC4 Razor View中找不到扩展方法?
- 在ASP.NET MVC 3 Web App + Ninject + EF中为不同用户设置不同的连接字符串
- 控制器错误“Microsoft.AspNetCore.Mvc.Rendering.SelectListItem”中的MVC Core SelectList下拉列表
- 无法加载文件或程序集’System.Web.Http.WebHost’