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