asp.net mvc model attribute and razor and form and jquery validate 完美结合
1.创建Model,添加标注。
[Serializable]
public class BaseUserModel:BaseModel
{
[StringLength(100)]
[Required(ErrorMessage = "User Name can not be empty")]
public string UserName { get; set; }
}
2.controller中action传Model到razor页面
public ActionResult Create()
{
BaseUserModel model = new BaseUserModel();
return View(model);
}
public ActionResult Create(BaseUserModel editViewModel)
{
if (ModelState.IsValid)
{...............}
return View(model);
}
3.razor页面验证数据
@using (Html.BeginForm("Edit", "BaseUser", FormMethod.Post, new { id = "editBaseUser_Form", enctype = "multipart/form-data" }))
{
.....
@Html.EditorFor(model => model.UserName, new { htmlAttributes = new { @class = "form-control", @maxlength = "50" } })
@Html.ValidationMessageFor(model => model.UserName, "", new { @class = "text-danger" })
....
}
var $form = $("#editBaseUser_Form");
var url = $form.attr("action");
var formDatas = $form.serializeJSON();
$form.removeData("validator");//必须写这个,不然第一次表单数据为空时,点击提交按钮,不会被Validation组件检测到,会被提交到服务器
$form.removeData("unobtrusiveValidation");//必须写这个,不然第一次表单数据为空时,点击提交按钮,不会被Validation组件检测到,会被提交到服务器
$.validator.unobtrusive.parse($form);//重新对控件进行验证
var bool = $form.validate().form();
if (bool) {
post(url, formDatas, function (data) {
if (data.Status == 200) {}
}
//易错总结
页面加载后运行此代码
$(function() {
$.validator.unobtrusive.parse($("form"));
});
原因:
页面加载后unobtrusive已对各标签的验证状态进行保存,页面局部加载后并不会导致unobtrusive重新对页面的控件进行验证并保存前状态,导致新页面无法进行验证。
原理:
注意看jquery.validate.unobtrusive源码最后一段:
$(function () {
$jQval.unobtrusive.parse(document);
});
jquery.validate.unobtrusive在页面加载后响应并运行上面代码,解析页面中data-val-*属性的标签,检验其验证规则。
局部刷新或加载页面后,jquery.validate.unobtrusive无法对新加入的标签进行data-val-*属性的过滤,导致验证失效。
解决:
$(function() {
$.validator.unobtrusive.parse($("form"));
});
调用上面代码,使unobtrusive重新对控件进行验证
asp.net mvc model attribute and razor and form and jquery validate 完美结合的更多相关文章
- ASP.NET MVC异步验证是如何工作的03,jquery.validate.unobtrusive.js是如何工作的
在上一篇"ASP.NET MVC异步验证是如何工作的02,异步验证表单元素的创建"中了解了ASP.NET异步验证是如何创建表单元素的,本篇体验jquery.validate.uno ...
- ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现
ASP.NET MVC 学习笔记-2.Razor语法 1. 表达式 表达式必须跟在“@”符号之后, 2. 代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...
- ASP.NET MVC Model验证(五)
ASP.NET MVC Model验证(五) 前言 上篇主要讲解ModelValidatorProvider 和ModelValidator两种类型的自定义实现, 然而在MVC框架中还给我们提供了其它 ...
- ASP.NET MVC Model元数据(五)
ASP.NET MVC Model元数据(五) 前言 在上一篇中我们描述了应用于Model上面的各种用于显示控制的特性类,在本篇中将详细的介绍这些特性类的应用,虽然它们跟Model元数据的直接关系并不 ...
- ASP.NET MVC Model元数据(四)
ASP.NET MVC Model元数据(四) 前言 前面的篇幅讲解了Model元数据生成的过程,并没有对Model元数据生成过程的内部和Model元数据结构的详细解释.看完本篇后将会对Model元数 ...
- ASP.NET MVC Model元数据(二)
ASP.NET MVC Model元数据(二) 前言 在上篇中,给大家留个对Model元数据的印象,并没有对Model元数据有过多的讲解,而在本篇中也不会对Model元数据的本身来解释,而是针对于它的 ...
- ModelBinder——ASP.NET MVC Model绑定的核心
ModelBinder——ASP.NET MVC Model绑定的核心 Model的绑定体现在从当前请求提取相应的数据绑定到目标Action方法的参数.通过前面的介绍我们知道Action方法的参数通过 ...
- ASP.NET MVC Model验证(四)
ASP.NET MVC Model验证(四) 前言 本篇主要讲解ModelValidatorProvider 和ModelValidator两种类型的自定义实现,前者是Model验证提供程序,而Mod ...
- ASP.NET MVC Model验证(三)
ASP.NET MVC Model验证(三) 前言 上篇中说到在MVC框架中默认的Model验证是在哪里验证的,还讲到DefaultModelBinder类型的内部执行的示意图,让大家可以看到默认的M ...
随机推荐
- CentOS 安装 oralce Java的图形出错: libXtst.so.6: cannot open shared object file: No such file or directory
问题类似: shared object file: No such file or directory occurred..java.lang.UnsatisfiedLinkError: /tmp/O ...
- windows开启ftp服务
1.启动或关闭windows-->internet information services-->ftp服务器 选中 2.此电脑右键-->管理-->服务和应用程序--> ...
- win10操作系统下oracle11g客户端/服务端的下载安装配置卸载总结
win10操作系统下oracle11g客户端/服务端的下载安装配置卸载总结 一:前提 注意:现在有两种安装的方式 1. oracle11g服务端(64位)+oracle客户端(32位)+plsql(3 ...
- 基于django中settings中间件源码思想,实现功能的插拔式设计
这里我们用到一个非常重要的模块,importlib,利用它可以实现字符串转python代码,再利用反射进行操作,这样就可以实现插拔式设计. 一.我们先做个初级的,把所有文件放到初级思想文件夹下: 1. ...
- php的$_get,$_post用法
$_GET 可以被收藏, 可以被缓存, 可以保存在历史记录中, 可以提交请求但是很不安全, 长度有限制在2000个字符,其实get请求就是一个url;$_GET['user_name'] $_POST ...
- JavaScript基础——JavaScript语法基础(笔记)
JavaScript语法基础(笔记) 1.语言编码 JavaScript语言建立在Unicode字符集基础之上,因此脚本中,用户可以使用双字节的字符命名常量.变量或函数等. [示例] var 我=&q ...
- head first 设计模式笔记2-观察者模式:气象观测站
设计原则:为了交互对象之间的松耦合设计而努力. 1.设计模式的一些理解 1)知道OO基础,并不足以让你设计出良好的OO系统 2)良好的OO设计必须具备可复用.可扩充.可维护三个特性 3)模式可以让我们 ...
- [JZOJ6247]【NOI2019模拟2019.6.27】C【计数】
Description n<=200000 Solution 比赛时没做出这道题真的太弟弟了 首先我们从小到大插入数i,考虑B中有多少个区间的最大值为i 恰好出现的次数不太好计算,我们考虑计算最 ...
- linux环境下写C++操作mysql(二)
main.cpp #include<stdio.h> #include<stdlib.h> #include"mysqlInterface.h" int m ...
- Confluence备份,数据迁移
一.Confluence的备份.恢复1)Confluence的备份 管理员账号登录Confluence,点击右上角的"一般配置"-"每日备份管理",如下图(默认 ...