1

<td>@Html.EditorFor(m => m.User.Username)</td>在 RegisterView 中有一个。这是 fireBUg 上的 HTML:

  <td>
<input id="User_Username" class="text-box single-line" type="text" value="" name="User.Username" data-val-required="The Username field is required." data-val="true">
</td>

我写了一个小 jquery 代码来检查用户名是否存在。这是我的代码:

function CheckUserNameExits() {
$("#User_Username").on("blur", function () {
    $("#User_Username").addClass("thinking");
    var username = $("#User_Username").val();
    $.ajax({
        url: "/Account/CheckUsername",
        data: { userName: username },
        dataType: "json",
        type: "POST",
        error: function () {
            return;
        },
        success: function (data) {
            if (data) {
                $("#User_Username").addClass("approved");
            }
            else {
                $("#User_Username").addClass("denied");
                $(".field-validation-error").html("The username already exits.");
            }
        }
    });
});

}

但是当我填写文本框并离开它时。POST 值始终为空。我确定我的脚本工作正常,它总是返回true,因为 post 值为 null。我的控制器方法:

[HttpPost]
    public ActionResult CheckUsername(string userName)
    {
        var user = IUserRepo.GetUserByUrName(userName);
        if (user!= null)
            return Json(false);
        return Json(true);
    }

在调试时userName参数始终为空。我尝试更改$("#User_Username")$(".text-box")但 POST 值也为空。对我有什么建议吗?

4

2 回答 2

1

尝试这个

function CheckUserNameExits() {
$("#User_Username").on("blur", function () {
    $("#User_Username").addClass("thinking");
    var username = $("#User_Username").val();
    $.ajax({
        contentType: "application/json, charset=utf-8",
        url: "/Account/CheckUsername",
        data: '{ "userName":"' + username + '"}',
        dataType: "json",
        type: "POST",
        error: function () {
            return;
        },
        success: function (data) {
            if (data) {
                $("#User_Username").addClass("approved");
            }
            else {
                $("#User_Username").addClass("denied");
                $(".field-validation-error").html("The username already exits.");
                }
            }
        });
    });
}
于 2013-08-07T04:27:22.370 回答
0

idEditFor并尝试

@Html.EditorFor(m => m.User.Username,new{id="EDUserName"})

function CheckUserNameExits() {
$("#EDUserName").on("blur", function () {
    $("#EDUserName").addClass("thinking");
    var username = $("#EDUserName").val();
    $.ajax({
        url: "/Account/CheckUsername",
        data: { userName: username },
        dataType: "json",
        type: "POST",
        error: function () {
            return;
        },
        success: function (data) {
            if (data) {
                $("#EDUserName").addClass("approved");
            }
            else {
                $("#EDUserName").addClass("denied");
                $(".field-validation-error").html("The username already exits.");
            }
        }
    });
});
}
于 2013-08-07T08:38:51.897 回答