远程验证,没有获得验证控制器的价值

时间:2013-04-11 22:37:23

标签: json asp.net-mvc-3 jquery

我是第一次尝试MVC3远程验证。我使用它作为经典'是用户名采取'场景,我失败了。我已经检查了chrome developer中的ajax信息,它看起来像是在发送值,但在我的验证控制器中,字符串为null。

来自ajax标题(在谷歌开发者中):

UserData.login:jon

验证控制器:

public class ValidationController : Controller
{
    //
    // GET: /Validation/

    public JsonResult IsUsernameAvailable(string login)
    {
        var repo = new Repository();

        bool IsNameInUse = repo.CheckUserName(login);

        if (IsNameInUse == true)
        {
            return Json("The Username has been taken, please try another", JsonRequestBehavior.AllowGet);
        }

        return Json(true, JsonRequestBehavior.AllowGet);
    }

}

'CheckUserName'方法:

    public bool CheckUserName(string Username)
    {
        var existingUser = (from u in db.useraccount
                           where u.login.Equals(Username)
                           select u).SingleOrDefault();

        if (existingUser == null)
        {
            return false;
        }
        else
        {
            return true;
        }
    }

并且用户模型上有Remote属性:

    [Remote("IsUserNameAvailable", "Validation")]
    [Display(Name = "Choose a Login Name")]
    [StringLength(40)]
    [Required]
    public string login { get; set; }

我已经阅读了一些关于在验证控制器中手动绑定的内容,但是我用来构建它的示例没有提到任何关于它的内容,所以我假设手动绑定只是对我做错的事情的补丁。如果您需要任何其他数据,请与我们联系。

1 个答案:

答案 0 :(得分:1)

好的,我发现了问题。正如发送的ajax中所见,该字段正在发送UserData.login,但验证控制器的参数只是登录。他们需要匹配,这样才能解决。

我想我现在需要改变一下我的视图模型。