使用MVC4中的SimpleMembership进行远程验证 - 没有命中控制器方法

时间:2013-05-14 02:59:12

标签: validation jquery simplemembership

我正在尝试在“注册”页面上对UserName proerty使用远程验证,因此如果已经使用了用户名,则用户会收到通知。在我添加SimpleMembership之前它已经工作了。

添加simlplemembership后,它停止工作,返回错误,所有简单成员表没有PK。我研究并发现了一种内置的远程验证方法。

现在我没有错误,我可以在谷歌开发者工具的网络选项卡中看到正在对正确的控制器进行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" />

我缺少什么想法?再说一遍,在我加入简单的会员资料之前,这一切都有效。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

在GET:/ Account / VerifyUserExists上 添加

[使用AllowAnonymous]

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