Ajax MVC3 Razor-远程验证未启动

Ajax MVC3 Razor-远程验证未启动,ajax,asp.net-mvc-3,razor,remote-validation,Ajax,Asp.net Mvc 3,Razor,Remote Validation,我尝试实现一种“忘记密码”机制,我认为最好在重置密码和发送电子邮件之前检查用户名和电子邮件地址。我这样做: -- model: public class ForgotPasswordModel { [Required(ErrorMessageResourceType = typeof(AccountResources), ErrorMessageResourceName = "RequiredUserNameMessage")] [Display(ResourceType = t

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

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


——在我包含的_Layout.cshtml视图中

--在Web.config文件中,我有所需的密钥:

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


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

您打算在布局中包括jQuery多少次?目前,在通常一个就足够的情况下,它包含了3次:
jquery-1.5.1.js
jquery-1.5.1.min.js
jquery-1.4.2.min.js
。另外,您似乎已经包含了
jquery.unobtrusiveajax.min.js
,但您应该在它之前包含
jquery.validate
。还有什么是
~/Scripts/jquery.unobtrusive-ajax.js文件
;您不需要unobtrusive和unobtrusive.min js文件,在unobtrusive-ajax.js之后,需要从您的引用中删除“文件”一词(第三个包括down)。还有,为什么您要引用两个不同版本的jQuery(一个本地的一个CDN)?谢谢Darin和WestDiscGolf,您的评论帮助我解决了这个问题。现在在_布局页面上,我包括:jquery-1.5.1.js、jquery.validate.js、jquery.validate.unobtrusive.js和jquery.unobtrusive-ajax.js。之前的混乱(包括“文件”一词)是由于无数次试图修复错误。非常感谢。我想将Darin Dimitrov的评论标记为已接受的答案,但复选框不可见!!
-- 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" />