MVC 多种 数据验证 post
技术:c# .net 采用mvc框架,实现model的数据验证。
刚开始觉得数据验证很方便,可以判断非空、数据正确性,但是后来发现很多需要数据库的判定还是需要post请求做,但是就想mvc的数据验证是否可以做到同样的功能,示例如下。
一:Model 层调用Post 方法数据验证


using System.Web.Mvc;
//我用的是4.0000
/// <summary>
/// 手机号
/// </summary>
[Required(ErrorMessage = "手机号不能为空!")]
[RegularExpression("[0-9]{11,11}", ErrorMessage = "手机号格式错误!")]
[System.Web.Mvc.Remote("CheckGuestMobile", "CRM", "CommercialTenant", HttpMethod = "post", ErrorMessage = "手机号已存在")]
public string Mobile { get; set; }
/// <summary>
/// 判断客户手机号是否重复
/// </summary>
/// <param name="mobile"></param>
/// <returns>True 已有此手机号</returns>
[HttpPost]
public ActionResult CheckGuestMobile(string mobile)
{
if (this.CRMService.CheckGuestMobile(mobile, this.LoginInfo.CommercialTenantID))
{
return Content("false");
}
else
{
return Content("true");
}
}
ps:这个只是前段验证,但是关键数据要在后端再做验证
这个post方法为false时不需要返还bool 可以直接返还ErrorMessage
public JsonResult CheckUserName(string userName)
{
if (IsUniqueName(userName) && IsForbiddenName(userName))
{
return Json(true, JsonRequestBehavior.AllowGet);
}
else if (!IsUniqueName(userName))
{
return Json("用户名不唯一!", JsonRequestBehavior.AllowGet);
}
else
{
return Json("用户名不包含违禁词!", JsonRequestBehavior.AllowGet);
}
}
二:基本方法
1、Required-必填选项,当提交的表单缺少该值就引发验证错误。
/// <summary>
/// 姓名
/// </summary>
[DisplayName("姓名")]
[Required(ErrorMessage = "姓名不能为空!")]
public string Name { get; set; }
2、StringLength
[StringLength()] //最大长度不超过20个字符
public string name { get; set; }
[StringLength(20,MinimumLength=3)] //最大长度不超过20个字符,最短不能低于3个字符
public string password { get; set; }
3、RegularExpression-正则表达式能够匹配的字符串,如果不能匹配,则报一个验证错误
[RegularExpression(@"^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$", ErrorMessage = "请输入正确的电子邮箱地址!")]
public string email{ get; set; }
4、Range-用来指定数值类型值的最小值和最大值。
[Range(35,44)] //整型,最小35,最大44
[Range(typeof(decimal),"0.00","49.99")] //decimal类型
5、Remote-允许利用服务器端的回调函数执行客户端的验证逻辑。说白了就是支持AJAX验证。
细则如上所示
6、Compare-用于确保模板对象的两个对象拥有相同的值。
[Compare("要对比的属性名")]
[Compare("Money")]
public decimal price { get; set; }
以上特性需要 using System.ComponentModel.DataAnnotations;
同时需要注意Web.config里面的这两个选项是否设置为了true;
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
后面如果有好的方法再说。
MVC 多种 数据验证 post的更多相关文章
- <转>ASP.NET学习笔记之MVC 3 数据验证 Model Validation 详解
MVC 3 数据验证 Model Validation 详解 再附加一些比较好的验证详解:(以下均为引用) 1.asp.net mvc3 的数据验证(一) - zhangkai2237 - 博客园 ...
- 期货大赛项目|四,MVC的数据验证
上图先看下效果 样式先不说,先了解下数据验证是怎么实现的 一 必须是强类型的视图 二 这些显示提示的话语,都在强类型的实体中 三 必须使用Html.BeginForm或者Html.AjaxBeginF ...
- MVC中数据验证
http://www.studyofnet.com/news/339.html http://www.cnblogs.com/kissdodog/archive/2013/05/04/3060278. ...
- MVC Model数据验证
概述 上节我们学习了Model的数据在界面之间的传递,但是很多时候,我们在数据传递的时候为了确保数据的有效性,不得不给Model的相关属性做基本的数据验证. 本节我们就学习如何使用 System.Co ...
- ASP.NET MVC 扩展数据验证 转
此文只作记录 public class MaxWordsAttribute : ValidationAttribute { public MaxWordsAttribute(int maxWords) ...
- MVC 3 数据验证 Model Validation 详解
在MVC 3中 数据验证,已经应用的非常普遍,我们在web form时代需要在View端通过js来验证每个需要验证的控件值,并且这种验证的可用性很低.但是来到了MVC 新时代,我们可以通过MVC提供的 ...
- [转]MVC自定义数据验证(两个时间的比较)
本文转自:http://www.cnblogs.com/zhangliangzlee/archive/2012/07/26/2610071.html Model: public class Model ...
- (转)MVC 3 数据验证 Model Validation 详解
继续我们前面所说的知识点进行下一个知识点的分析,这一次我们来说明一下数据验证.其实这是个很容易理解并掌握的地方,但是这会浪费大家狠多的时间,所以我来总结整理一下,节约一下大家宝贵的时间. 在MVC 3 ...
- Asp.Net Mvc后台数据验证自测小Demo
使用过MVC的同学一定不陌生MVC的模型绑定和模型校验,使用起来非常方便,定义好Entity之后,在需要进行校验的地方可以打上相应的Attribute,在Action开始时检查ModelState的I ...
随机推荐
- 采用QHD分辨率使用kinect2_calibration,完成QHD图像校正
//.................................................................................//采用QHD分辨率使用kinec ...
- “ResGen.exe”已退出,代码为2 问题处理
这属于VS2010不能编译.Net3.5的问题 用VS2010创建了一个.Net 3.5的Winform项目,结果编译失败,这个问题也算是第二次碰到了,真纠结···这次不再偷懒了,把解决方法记录下来吧 ...
- NOIP2007:纪念品分组
#include<stdio.h> #include<stdlib.h> int a[100]; int main(){ int i,j,k,m,n,w; scanf(&quo ...
- unity, 3dmax制作的morph(blendshape)导入unity中使用注意事项
在实现<乱纪元大冒险>(见:http://www.cnblogs.com/wantnon/p/4857072.html)中由于质子展开失败形成的变形几何体和眼睛.几何体经过一系列形变最后变 ...
- 王立平-- Swift
Swift是供iOS和OS X应用编程的新编程语言,基于C和Objective-C.而却没有C的一些兼容约束.Swift採用了安全的编程模式和加入现代的功能来是的编程更加简单.灵活和有趣. 界面则基于 ...
- 探索Popupwindow-对话框风格的窗体(
Android中还是会经经常使用到Popupwindow.一种类似于对话框风格的窗体,当然类似于对话框风格也能够用Activity,能够參考:Android中使用Dialog风格弹出框的Activit ...
- python2和python3中str,bytes区别
python2中,有basestring.str.bytes.unicode四种类型 其中str == bytes ,basestring = (str,unicode) >>> i ...
- PHP中的正则表达式及模式匹配
PHP中的正则表达式及模式匹配 PHP中对于正则处理文本提供了两种方式,一种是PCRE方式(PCRE库是一个实现了与perl 5在语法和语义上略有差异(详见下文)的正则表达式模式匹配功能的函数集. 当 ...
- iOS 坐标系转换
已知button的frame,如果要计算button相对于view的frame,则可以使用以下方法 CGRect rc = [btn.superview convertRect:btn.frame t ...
- python练习题3--for
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 程序分析: 假设该数为 x. 1.则:x + 100 = n2, x + 100 + 168 = m2 ...