ASP.NET MVC3开发 - CodeFisrt数据库篇之M层验证之调用远程方法(Remote)验证
本文讲述在作者在使用.net mvc3进行开发的时候用到的两种调用远程验证的方法,第一种方法比较傻瓜,第二种方法方便好用,调用远程验证是个比较常见的验证方法,比如注册用户时的用户名唯一性验证。
作者原创,转载请标明:http://www.kwstu.com/ArticleView/admin_20139251081022
首先创建一个model类
//用户注册 public class UnitRegisterViewModel { public UnitRegisterViewModel() { } public string ID { set; get; } [Required(ErrorMessage = "{0}必须填写!")] [StringLength(50, MinimumLength = 1, ErrorMessage = "{0}必须在{2}至{1}位之间")] [DisplayName("单位名称")] [Remote("CheckUnitName", "Login")] public string UNITNAME { set; get; } [Required(ErrorMessage = "登录名必须填写")] [StringLength(20, MinimumLength = 6, ErrorMessage = "登录名必须在{2}至{1}位之间")] [CheckSameUsername(ErrorMessage = "{0}用户已被注册,请重新填写")] [DisplayName("登录名")] public string USERNAME { set; get; } [Required(ErrorMessage = "密码必须填写!")] [DisplayName("密码")] public string USERPASS { set; get; } [Required(ErrorMessage = "确认密码必须填写!")] [Compare("LOGINPASS", ErrorMessage = "密码和确认密码不一致,请重新输入")] [DisplayName("确认密码")] public string CONFIRMPASS { set; get; } }
首先创建一个类
//验证用户名数据库中是否存在 public class CheckSameUsernameAttribute : ValidationAttribute { public override bool IsValid(object value) { if (value == null) { return true; } KzrcwDbContent context = new KzrcwDbContent(); string st = value.ToString(); var res = context.UNIT_BASE.Where(m => m.LOGINNAME == st).Count(); if (res == 0) { return true; } return false; } }
使用方法:
[CheckSameUsername(ErrorMessage = "{0}用户已被注册,请重新填写")] public string USERNAME { set; get; }
2.使用.net mvc3提供的Remote特性方法进行验证
调用方法如下:
此种方法比较方便
首先在Controller中创建一个验证方法
public JsonResult CheckUnitName(string unitname) { List<UNIT_BASE> unit = db.UNIT_BASE.Where(c => c.NAME == unitname).ToList(); if (unit.Count == 0) return Json(true, JsonRequestBehavior.AllowGet); string suggestedUID = String.Format(CultureInfo.InvariantCulture, "{0}单位已存在,请直接登录。", unitname); return Json(suggestedUID, JsonRequestBehavior.AllowGet); }
[Remote("CheckUnitName", "Login")] public string UNITNAME { set; get; }
笔者写作水平和技术水平有限,以上内容仅供参考!