无法获得jquery中的EditorFor值?

时间:2013-08-07 03:33:11

标签: jquery asp.net-mvc-3

我在RegisterView中有一个<td>@Html.EditorFor(m => m.User.Username)</td>。这是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>

我写了一个litte 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值始终为null。我确定我的脚本工作正常,它始终返回true,因为post值为null。我的控制器方法:

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

在调试中,userName参数始终为null。我尝试将$("#User_Username")更改为$(".text-box"),但POST值也为null。对我有任何意见吗?

2 个答案:

答案 0 :(得分: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.");
                }
            }
        });
    });
}

答案 1 :(得分:0)

id提供给EditFor并尝试

@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.");
            }
        }
    });
});
}