无法验证使用现有的电子邮件ID,[远程]数据注解属性 [英] Unable to Validate Existing email Id using [Remote] data annotation attribute

查看:185
本文介绍了无法验证使用现有的电子邮件ID,[远程]数据注解属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想用在模型[远程]数据注解来验证电子邮件ID存在于数据库中。
但是,当我调用远程JsonResult动作方法的参数将是空,结果将永远是假的,会显示错误消息。在我的code中的问题是什么?

型号:

 公共类RegisterModel
{
    [必需(的ErrorMessage =电子邮件是必需的!,AllowEmptyStrings = FALSE)]
    [远程(IsEmailIdExists,帐户,的ErrorMessage =电子邮件ID已经存在于数据库)]
    [显示(名字=电子邮件ID)]
    [RegularEx pression([A-ZA-Z0-9 ._%+ - ] + @ [A-ZA-Z0-9 .-] + [A-ZA-Z] {2,4} ,的ErrorMessage =无效的电子邮件ID)]
    公共字符串电子邮件{获得;组; }    [必需(的ErrorMessage =密码是必需的!,AllowEmptyStrings = FALSE)]
    [数据类型(DataType.Password)
    [RegularEx$p$pssion(@\"(?=^.{8,15}$)((?=.*\\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))^.*\",的ErrorMessage =密码无效!)]
    公共字符串密码{搞定;组; }    [System.ComponentModel.DataAnnotations.Compare(密码的ErrorMessage =确认密码剂量无法比拟的!)
    [必需(的ErrorMessage =确认密码是必需的!)
    [数据类型(DataType.Password)
    公共字符串ConfirmPassword {搞定;组; }
}
公共类EmailExists
    {
         公共BOOL EmailCheck(字符串_EMAIL)
         {
              尝试
              {
                 VAR CON =新的SqlConnection();
                 con.ConnectionString = ConfigurationManager.ConnectionStrings [DBConnection的]的ConnectionString。
                 COM的SqlCommand =新的SqlCommand(spCheckEmailCON);
                 com.CommandType = CommandType.StoredProcedure;
                 com.Parameters.Add(@的uname,SqlDbType.NVarChar,-1).value的= _EMAIL;
                 con.Open();
                 com.CommandTimeout = 120;
                 SqlDataReader的读者= com.ExecuteReader();
                 如果(reader.HasRows)
                 {
                     如果(reader.Read())
                     {
                          如果(读者[激活。的ToString()==真)
                          {
                               reader.Dispose();
                               com.Dispose();
                               返回true;
                          }
                          其他
                          {
                               返回false;
                          }
                     }
                     其他
                     {
                          返回false;
                     }
                 }
                 其他
                 {
                     reader.Dispose();
                     com.Dispose();
                     返回false;
                 }
                 con.Close();
                 com.Dispose();
            }
            赶上(异常前)
            {
                返回false;
            }
       }
   }

帐户控制器

 公共JsonResult IsEmailIdExists(字符串EMAILID) -  GT;总是空{
      Model.EmailExists emailCheck =新FresherModel.EmailExists();
      如果(!emailCheck.EmailCheck(EMAILID))
      {
           返回JSON(假);
      }
      其他
      {
          返回JSON(真);
      }
}


解决方案

你的财产的名称是电子邮件。改变你的操作方法的签名,以匹配

 公共JsonResult IsEmailIdExists(字符串email)
{
  .....

I want to validate existence of Email Id in database using [Remote] data Annotation in Model. But when I call a remote JsonResult Action method the parameter will be null and the result will be always be false and error message will be displayed. What is the problem in my code?

Model :

public class RegisterModel
{
    [Required(ErrorMessage = "Email is Required!", AllowEmptyStrings = false)]
    [Remote("IsEmailIdExists", "Account", ErrorMessage = "Email Id already exists in Database")]
    [Display(Name = "Email Id")]
    [RegularExpression("[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,4}", ErrorMessage = "Invalid Email Id")]
    public string Email { get; set; }

    [Required(ErrorMessage = "Password is Required!", AllowEmptyStrings = false)]
    [DataType(DataType.Password)]
    [RegularExpression(@"(?=^.{8,15}$)((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))^.*", ErrorMessage = "Invalid Password!")]
    public string Password { get; set; }

    [System.ComponentModel.DataAnnotations.Compare("Password", ErrorMessage = "Confirm password dose not match!")]
    [Required(ErrorMessage = "Confirm Password is Required!")]
    [DataType(DataType.Password)]
    public string ConfirmPassword { get; set; }
}


public class EmailExists
    {
         public bool EmailCheck(string _email)
         {
              try
              {
                 var con = new SqlConnection();
                 con.ConnectionString = ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString;
                 SqlCommand com = new SqlCommand("spCheckEmail", con);
                 com.CommandType = CommandType.StoredProcedure;
                 com.Parameters.Add("@uname", SqlDbType.NVarChar, -1).Value = _email;
                 con.Open();
                 com.CommandTimeout = 120;
                 SqlDataReader reader = com.ExecuteReader();
                 if (reader.HasRows)
                 {
                     if (reader.Read())
                     {
                          if (reader["Active"].ToString() == "True")
                          {
                               reader.Dispose();
                               com.Dispose();
                               return true;
                          }
                          else
                          {
                               return false;
                          }
                     }
                     else
                     {
                          return false;
                     }
                 }
                 else
                 {
                     reader.Dispose();
                     com.Dispose();
                     return false;
                 }
                 con.Close();
                 com.Dispose();
            }
            catch(Exception ex)
            {
                return false;
            }
       }
   }

Account Controller

public JsonResult IsEmailIdExists(string EmailId) -> Always Null

{
      Model.EmailExists emailCheck = new FresherModel.EmailExists();
      if(!emailCheck.EmailCheck(EmailId))
      {
           return Json(false);
      }
      else
      {
          return Json(true);
      }
}

解决方案

The name of your property is Email. Change the signature of your action method to match

public JsonResult IsEmailIdExists(string Email)
{
  .....

这篇关于无法验证使用现有的电子邮件ID,[远程]数据注解属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆