2

我正在编写一些代码,用户可以在提交表单之前检查数据库中是否已经存在用户名。这通过 onkeyup 事件处理程序起作用,该处理程序从文本框中获取值并将其传递给 ajax 请求,该请求使用字符串参数调用我的 ActionResult 方法。我的 SQL 逻辑工作正常,我收到一个表示已经存在或不存在的值。

我遇到的问题来自我的控制器,我想返回值。在我的 Jquery Ajax 请求的成功部分,我试图访问我的 ViewData["index name"] 但我的警报显示一个空字符串。

Javascript代码:

function searchUsername() {
     var filters = getFilterVals();
     $.ajax({
         url: '@Url.Action("UsernameSearch", "UserManager")',
         type: "POST",
         async: true,
         dataType: "text",
         data: "username=" + filters.username,
         success: function () {
             var str = '@ViewData["UserName"]';
             alert(str);
             $('#txtUsernameExists').val(str);
             configureGui();
             jQueryTableStyling();
         },
         error: function (data) {

         }
     });
}

function getFilterVals() {
     filters = new Object();
     filters.username = $('#createuser-usernamesearch #user_name').val();
     return filters;
}

C# 控制器代码:

public ActionResult UsernameSearch(string username)
{
    string output = DAL.usernameSearch(username);
    ViewData["Username"] = output;
    return PartialView("~/Views/Partial/_txtUsernameSearch.cshtml");
}

我究竟做错了什么?欢迎任何建议。

4

2 回答 2

4

ASP.NET:

public JsonResult UsernameSearch(string username)
{
            string output = DAL.usernameSearch(username);

            return Json(new
            {
                Html = PartialView("~/Views/Partial/_txtUsernameSearch.cshtml"),
                Username = output
            });
}

JS:

$.ajax({
            url: '@Url.Action("UsernameSearch", "UserManager")',
            type: "POST",
            async: true,
            dataType: "json",
            data: "username=" + filters.username,
            success: function (data) {

                var html = data.Html;
                var str = data.Username;
                alert(str);

                $('#txtUsernameExists').val(str);
                configureGui();
                jQueryTableStyling();
            },
            error: function (data) {

            }
        });
于 2012-12-10T15:23:46.003 回答
0

尝试这个:

改变:

ViewData["Username"] = output;

为了这:

ViewData["UserName"] = output;
于 2012-12-10T15:22:16.237 回答