0

我尝试实现“忘记密码”机制,我认为最好在重置密码和发送电子邮件之前检查用户名和电子邮件地址。我这样做了:

-- model:
public class ForgotPasswordModel
{
    [Required(ErrorMessageResourceType = typeof(AccountResources), ErrorMessageResourceName = "RequiredUserNameMessage")]
    [Display(ResourceType = typeof(AccountResources), Name = "UserNameDisplay")]
    [Remote("ValidateUser", "Account", ErrorMessage = "Unknown user")]
    public string UserName { get; set; }

    [Required(ErrorMessageResourceType = typeof(AccountResources), ErrorMessageResourceName = "RequiredEmailMessage")]
    [DataType(DataType.EmailAddress)]
    [Remote("ValidateEmailAddress", "Account", AdditionalFields = "UserName", ErrorMessage = "Wrong password"]
    [Display(ResourceType = typeof(AccountResources), Name = "EmailDisplay")]
    public string Email { get; set; }
}

-- validation controller ("Account"):
    public ActionResult ValidateUser(string username)
    {
        bool result=false;
        MembershipUser currentUser = Membership.GetUser(username);

        result = (currentUser != null) && (currentUser.UserName.Equals(username));
        return Json(result, JsonRequestBehavior.AllowGet);
    }

    public ActionResult ValidateEmailAddress(string username, string email)
    {
        bool result = false;
        MembershipUser currentUser = Membership.GetUser(username);

        result = (currentUser != null) && (currentUser.Email.Equals(email));
        return Json(result, JsonRequestBehavior.AllowGet);
    }

-- in the _Layout.cshtml view I included
<script src="@Url.Content("~/Scripts/jquery-1.5.1.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js files")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

<script src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js" type="text/javascript"></script>

-- in the Web.config file I have the required keys: 
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

我无法触发“远程”验证,无论是客户端还是服务器端(提交时)。但是,“必需”验证按预期工作。

我被卡住了,请提出解决方案,提前谢谢你。

4

0 回答 0