2

フォームを送信する前に、ユーザーがデータベースにユーザー名がすでに存在するかどうかを確認できるコードを書いています。これは、テキストボックスから値を取得し、文字列パラメーターを使用してActionResultメソッドを呼び出すajaxリクエストに渡すonkeyupイベントハンドラーで機能します。私の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 に答える