kwstu.com

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; }
       }
1.继承ValidationAttribute方法验证
首先创建一个类

   

//验证用户名数据库中是否存在
    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; }
笔者写作水平和技术水平有限,以上内容仅供参考!
posted @ 2013-09-25 10:12  kwstu  阅读(219)  评论(0编辑  收藏  举报

kwstu1111111.com