您的位置:首页 > 编程语言 > ASP

ASP.NET MVC3开发 - CodeFisrt数据库篇之M层验证之调用远程方法(Remote)验证

2013-09-25 10:12 351 查看
本文讲述在作者在使用.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; }


[align=left]笔者写作水平和技术水平有限,以上内容仅供参考![/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐