C# 远程验证不起作用

C# 远程验证不起作用,c#,jquery,json,asp.net-mvc,asp.net-mvc-4,C#,Jquery,Json,Asp.net Mvc,Asp.net Mvc 4,当我在文本框中输入电子邮件的值时,它并没有触发VerifyUserEmail方法。下面是我的代码。我的错在哪里 看法 控制器 我还添加了 在web.config中 下面是生成的html代码: <div class="form-group"> <label class="control-label col-lg-2" for="User_Email">Email</label> <div class="col-lg-4">

当我在文本框中输入电子邮件的值时,它并没有触发VerifyUserEmail方法。下面是我的代码。我的错在哪里

看法

控制器

我还添加了

在web.config中

下面是生成的html代码:

 <div class="form-group">
    <label class="control-label col-lg-2" for="User_Email">Email</label>
        <div class="col-lg-4">
            <input class="text-box single-line" data-val="true" data-val-length="The field Email must be a string with a maximum length of 200." data-val-length-max="200" data-val-remote="Email already exists!" data-val-remote-additionalfields="*.User_Email" data-val-remote-url="/User/VerifyUserEmail" id="User_Email" name="User_Email" type="text" value="" />
            <span class="field-validation-valid" data-valmsg-for="User_Email" data-valmsg-replace="true"></span>
       </div>
 </div>
编辑

我已经搬走了

$(“#注册”)。验证({
//规则:{
它正在工作


有什么想法吗?为什么?

数据属性中的错误消息从未被使用过(您可以使用下面的简单示例来测试这一点):

Remote接受带有错误消息的重载,但不执行任何操作,您应该从服务器端返回错误消息

基本上,除了返回true之外的任何内容都是发送回客户端的错误消息。如果添加消息而不是返回false,您应该会看到这一点

 return Json(string.Format("{0} does not exist.", User_Email),
                JsonRequestBehavior.AllowGet); 
您还需要确保您拥有以下参考资料:

<script src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.2.min.js"></script>
<script src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
控制器:

    public JsonResult VerifyUserEmail(string User_Email)
    {

            if (User_Email == "1")
            {
                return Json("No", JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json(true, JsonRequestBehavior.AllowGet);
            }
    }
看法


@使用(Html.BeginForm())
{
@Html.LabelFor(model=>model.User_电子邮件,新的{@class=“controllabel col-lg-2”})
@Html.EditorFor(model=>model.User\u电子邮件)
@Html.ValidationMessageFor(model=>model.User\u电子邮件)
}
截屏


尝试将
[AllowAnonymous]
添加到方法
VerifyUserEmail
是否使用并包括jquery、jquery.validate、jquery.validate.unobtrusive?@Mackan.Yes,所有内容都已正确加载。@RahulNikate.Try
[AllowAnonymous]
未成功。我只有一次
@使用(Html.BeginForm)(“注册”、“用户”,FormMethod.Post,new{id=“Registration”})
.OPs操作甚至没有被击中-肯定这不是原因。你确定吗,因为我在我的一个项目中使用了
远程验证
,带有
ErrorMessage
属性,它工作正常。
RemoteAttribute
可以接受
ErrorMessage
@hutchonoid,我可以相信ErrorMessage不会被击中处理正确,但如果它只是阻止调用该操作,我会感到惊讶。Meh,我以前是错的:)(虽然还没有说我完全错)@Mackan别担心,我一直都错,还没有排除自己的可能性,但这有助于我们从中吸取教训。:)
$(document).ready(function () {
    $("#Registration").validate({
        rules: {
            User_Email: {
                required: true, email: true
            },
            User_Password: {
                required: true,
                minlength: 8
            },
            User_ReTypePassword: {
                required: true,
                minlength: 8,
                equalTo: '#User_Password'
            },
            User_FirstName: { required: true },
            User_LastName: { required: true },
            User_ZipCode: {
                required: true,
                digits: true
            }
        },
        messages: {
            User_Email: {
                required: 'Email is required', email: 'Invalid email'
            },
            User_Password: {
                required: 'Password is required',
                minlength: 'Min length of password is 8'
            },
            User_ReTypePassword:
                {
                    required: 'Confirm Password is required',
                    equalTo: 'Confirm Password must be equal to password'
                },
            User_ZipCode: { required: 'ZipCode is required', digits: 'Only digits are allowed' },
            User_FirstName: { required: 'First Name is required' },
            User_LastName: { required: 'Last Name is required' }
        },
        errorPlacement: function (error, element) {
            error.insertAfter(element);
        },
        showErrors: function (errorMap, errorList) {
            this.defaultShowErrors();
        }
    });
});
[Remote("VerifyUserEmail", "User"]
 return Json(string.Format("{0} does not exist.", User_Email),
                JsonRequestBehavior.AllowGet); 
<script src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.2.min.js"></script>
<script src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
public class AModel
{
    [DisplayName("Email")]
    [Remote("VerifyUserEmail", "Home")]
    public string User_Email { get; set; }
}
    public JsonResult VerifyUserEmail(string User_Email)
    {

            if (User_Email == "1")
            {
                return Json("No", JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json(true, JsonRequestBehavior.AllowGet);
            }
    }
<script src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.2.min.js"></script>
<script src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@using (Html.BeginForm())
{

    <div class="form-group">
        @Html.LabelFor(model => model.User_Email, new { @class = "control-label col-lg-2" })
        <div class="col-lg-4">
            @Html.EditorFor(model => model.User_Email)
            @Html.ValidationMessageFor(model => model.User_Email)
        </div>
    </div>
    <input type="submit" />
}