0

我正在尝试在注册页面上的用户名属性上使用远程验证,因此如果用户名已被使用,用户会收到通知。在我添加 SimpleMembership 之前它就起作用了。

添加 simlplemembership 后,它停止工作,返回一个错误,关于所有没有 PK 的 simplemembership 表。我研究并发现了一种内置的方法来进行远程验证。

现在我没有收到任何错误,我可以在谷歌开发者工具的网络选项卡中看到,ajax 调用正在对正确的控制器进行,但我在控制器方法中设置了一个断点,它没有被命中。所以不知道该怎么办。这是我的设置方式:

附加了 Remote 属性的模型。:

    [Required]
    [Remote("VerifyUserExists", "Account")]
    [Display(Name = "User name")]
    public string UserName { get; set; }

没有命中的控制器方法:

    public JsonResult VerifyUserExists(string username)
    {
        var user = Membership.GetUser(username);

        if (user != null)
        {
            return Json(ErrorCodeToString(MembershipCreateStatus.DuplicateUserName),
                            JsonRequestBehavior.AllowGet);
        }
        else
        {
            return Json(true, JsonRequestBehavior.AllowGet);
        }

    }

并且在 Web 配置中启用了验证;

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

任何想法我错过了什么?同样,在我添加 simplemembership 之前,这一切都有效。

4

2 回答 2

2

检查响应中返回的 HTTP 状态代码。如果无法分辨来自 Google 工具的状态代码是什么,请使用 Fiddler。如果状态码为 302,则服务器正在发送重定向,这通常发生在服务器出错时。检查服务器日志以查看是否有任何错误以确定问题所在。

于 2013-05-17T13:02:53.007 回答
0

在 GET 上:/Account/VerifyUserExists 添加

[允许匿名]

由于您切换到 SimpleMemberShip 的东西,所以设置了默认的 [Authorize] annonation。因此,对于公共 GET,您应该明确设置 [AllowAnonymous]

于 2013-09-08T09:25:36.000 回答