博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASPNetCore MVC ModelValidation-ajax
阅读量:6592 次
发布时间:2019-06-24

本文共 1614 字,大约阅读时间需要 5 分钟。

 在提交数据时常常会在客户端进行一次友好的验证信息提示,常见的就是直接通过ModelValidation验证(这种方式最快最简单),还有些情况期望使用ajax异步方式处理以实现更多其他逻辑的处理。

 此篇文章主要描述在使用ajax和直接提交窗体--验证Model时如何正确进行验证信息的提示。

 一、通过ModelValidation的方式实现

这个比较简单,没什么好说的直接上代码

前端:
后端:public class ValidModel { [Required(ErrorMessage ="必须填写")] public long Age { get; set; } }这里的话就已经实现了验证(MVC的验证模型)。

 二、通过ajax的方式实现

 1. 通过jquery, jqueryValidate实现

前端:
后端:public class ValidModel { public long Age { get; set; } }由于采用了ajax的验证,所以这里后台Model不再使用required属性,前端这里也不需要引用jquery.validate.unobtrusive.js。

2 . 异常引用:jquery.validate,jquery, jquery.validate.unobtrusive并且采用asp-for

标记时就会出现:
 对于Model的绑定属性是值类型时:
 MVC会自动触发required属性的标签生成:data-val="true" data-val-required="The Age field is required."
 这个属性会直接影响到jqueryvalidate的验证的处理结果,就是没有提示消息出来。

 对于这个问题以下两种解决方案供参考

第一种在标签上不使用asp-for属性,而是直接静态方式name='xxx'.

前端:
后端:public class ValidModel { public long Age { get; set; } }

第二种使用asp-for属性,对应的Model的话需要调整值类型为:可以null的类型, Nullable<T>或者T?的类型,这样的话就会默认过滤掉

required属性生成的标签data*,避免了和jquery.validate.unobtrusive的冲突.

前端:
后端:public class ValidModel { public long? Age { get; set; } // public Nullable
Age {get;set;} 一样的 }

参考链接

转载于:https://blog.51cto.com/dream1135134786/2379612

你可能感兴趣的文章
hdu4489(递推dp)
查看>>
Shell脚本基础
查看>>
spring rabbitmq集成
查看>>
sed用法点滴
查看>>
TIBCO ActiveMatrix BPM 生成daa包脚本
查看>>
位运算之二进制中1的个数
查看>>
cygwin sshd服务启动不了的解决方案(转)
查看>>
语音识别实践 之 科大讯飞
查看>>
cassandra的命令
查看>>
pta l2-20(功夫传人)
查看>>
python基础知识--标志位的设定
查看>>
ECMAScript 基础(一)-语法
查看>>
python_excel
查看>>
ajax 整个表单的提交
查看>>
python之 文件读与写
查看>>
主库 归档 删除策略
查看>>
I00011 打印包含7的三位数
查看>>
linux 批量替换
查看>>
MVC初探
查看>>
The area 积分积分
查看>>