[英]Remote Validation For Checking Email in MVC
我正在使用远程验证来检查数据库中是否已存在电子邮件,但它不起作用,这是代码:
模型属性
[Remote("IsAlreadyUserExist", "User", HttpMethod = "POST", ErrorMessage = "Email Already Exists.")]
public string Email { get; set; }
调节器
[HttpPost]
public JsonResult IsAlreadyUserExist(string Email)
{
return Json(IsUserExist(Email));
}
public bool IsUserExist(string Email)
{
List<UserProfile> userlist = userRepo.GetUserList();
var UserEmailId = (from u in userlist
where u.Email.ToUpper() == Email.ToUpper()
select new { Email }).FirstOrDefault();
bool status;
if (UserEmailId != null)
{
//Already registered
status = false;
}
else
{
//Available to use
status = true;
}
return status;
}
我在底部的“创建”视图中添加了此js。
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
我还尝试将调试器放入IsAlreadyUserExist
函数中,但没有成功。
知道可能是什么问题吗?
为使RemoteAttibute
正常工作,请按如下所示在“ Email
属性上编写RemoteAttibute
:
[Required]
[StringLength(30)]
[Index("Ix_Email",Order =1,IsUnique =true)]
[Remote("IsUserAlreadyExists", "User", AdditionalFields = "Id", ErrorMessage = "User already exists with the provided email")]
public string Email { get; set; }
您正在从内存中的数据库中拉出所有用户,只是为了检查某个电子邮件是否已经存在一个用户,从性能的角度来看,这是非常糟糕的。 因此,在UserController
编写IsUserAlreadyExists
方法,如下所示:
public JsonResult IsUserAlreadyExists(string Email, int? Id)
{
var isUserAlreadyExists = db.Users.Any(x => x.Email== Email && x.Id != Id);
return Json(!isUserAlreadyExists, JsonRequestBehavior.AllowGet);
}
现在,如果要将数据库访问代码移至UserRepository
请按以下步骤进行操作:
public class UserRepository
{
YourDbContext dbContext = new YourDbContext();
public bool IsUserAlreadyExistsByEmail(string email, int? id)
{
return dbContext.Users.Any(x => x.Email== Email && x.Id != Id);
}
}
然后调用IsUserAlreadyExistsByEmail
的方法UserRepository
如下:
public JsonResult IsUserAlreadyExists(string Email, int? Id)
{
var isUserAlreadyExists = userRepo.IsUserAlreadyExistsByEmail(Email,Id);
return Json(!isUserAlreadyExists, JsonRequestBehavior.AllowGet);
}
注意:我没有看到您的存储库代码,因此在这里显示了它应该是如何的通用视图。 根据自己的结构使用一切。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.