c# - 在 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
写下您 RemoteAttibute
的财产:Email
[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; }
您从内存中的数据库中提取所有用户只是为了检查用户是否已经存在某个电子邮件,考虑到性能角度,这是非常非常糟糕的。所以写IsUserAlreadyExists
方法UserController
如下:
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);
}
注意:我没有看到您的存储库代码,所以我在这里展示了它应该如何的一般视图。根据自己的结构使用一切。
推荐阅读
- spring-boot - 从源 '' 访问 XMLHttpRequest 在 '' () 已被 CORS 策略阻止:不存在 'Access-Control-Allow-Origin' 标头
- excel - Excel 2010 版本无法执行
- sql - 查找对购买最多的客户的销售额最高的员工
- laravel - \Request::getSession() 在 Controller 构造中返回 NULL
- postgresql - 如何核对 postgres 模式?
- python - 检查数据框单元格是否包含另一个数据框单元格中的值
- linux - 在分叉之前或之后在磁盘文件上调用 mmap() 有什么区别?
- java - 无法使用 Sendgrid SMPT 触发高优先级电子邮件到 Java 中的 Outlook
- python - 如何从文件中的 3D 列表/数组中提取数据以进行计算
- ajax - Morris.js x Axis 排列不正确