0

我第一次尝试 MVC3 远程验证。我将它用于经典的“用户名是否被占用”场景,但我失败了。我已经检查了 chrome 开发人员中的 ajax 信息,它看起来像是在发送值,但是在我的验证控制器中,字符串为空。

从 ajax 标头(在 google 开发人员中):

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);
    }

}

“检查用户名”方法:

    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; }

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

4

1 回答 1

1

好的,我发现了问题。从发送的 ajax 中可以看出,该字段正在发送 UserData.login,但验证控制器的参数只是登录。他们需要匹配,这样就解决了。

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

于 2013-04-11T23:14:48.643 回答