【问题标题】:Model View Remote Validation模型视图远程验证
【发布时间】:2015-07-20 21:56:48
【问题描述】:

我正在使用我的 MVC 模型中的 Remote 属性进行远程验证,请查找以下代码:

[Required]
[System.Web.Mvc.Remote("IsEmailExist", "Account", HttpMethod = "POST", ErrorMessage = "The Email Already Exists")]

在控制器动作方法中,我使用电子邮件的用户输入作为参数并与数据库检查,请找到以下代码:

public JsonResult IsEmailExist(string emailAddress)
{
    using  (var db = new YouTubeNZ())                                                
    { 
        var isExist = !db.Users.Any(X => X.EmailAddress == emailAddress);                                         
        return Json(isExist, JsonRequestBehavior.AllowGet);                                                 
    }
}              

但在运行时,action 方法中的参数为“Null”,此时该值应为用户输入的电子邮件地址,并且未针对现有电子邮件进行验证。

【问题讨论】:

  • 电子邮件输入字段的名称属性是什么?
  • 显示你应用到的属性 - 它需要是public string emailaddress

标签: asp.net-mvc remote-access


【解决方案1】:

确保使用HttpPost attr 装饰您的操作方法,并且您的属性名称与方法参数匹配(即:EmailAddress):

[HttpPost]
public JsonResult IsEmailExist(string emailAddress)
{
    using  (var db = new YouTubeNZ())                                                
    { 
        var isExist = !db.Users.Any(X => X.EmailAddress == emailAddress);                                         
        return Json(isExist, JsonRequestBehavior.AllowGet);                                                 
    }
}

【讨论】:

    【解决方案2】:

    请确认以下内容。

    你的模型属性应该是这样的

    [Required]
    [System.Web.Mvc.Remote("IsEmailExist", "Account", ErrorMessage = "The Email Already Exists")]
    public string EmailAddress { get; set; }
    

    还将您的 AccountsController 操作方法更改为

    public ActionResult IsEmailExist(string emailAddress)
    {
        using  (var db = new YouTubeNZ())                                                
        { 
            bool isExist = !db.Users.Any(X => X.EmailAddress == emailAddress);                                         
            return Json(isExist, JsonRequestBehavior.AllowGet);                                                 
        }
    }
    

    【讨论】:

      【解决方案3】:
      Your Model should be like this
      
      [Required]
      [Remote("IsEmailExist","Account",ErrorMessage="This Email is already exists")]
      public string EmailAddress{get;set;}
      
      And Controller should be like this
      
      public JsonResult IsEmailExist(string emailAddress)
      {
          return Json(isExist(emailAddress),JsonRequestBehavior.AllowGet);
      }
      
      private bool isExist(string emailAddress)
      {
           using  (var db = new YouTubeNZ())                                                
           { 
              return  !db.Users.Any(X => X.EmailAddress == emailAddress); 
           }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-18
        • 1970-01-01
        • 2010-11-18
        • 2011-04-04
        • 1970-01-01
        • 1970-01-01
        • 2011-06-01
        • 1970-01-01
        相关资源
        最近更新 更多