0

こんにちは、cshtml で jquery (ajax) を使用して、コントロールで関数を呼び出そうとしていました...

ホームフォルダーにあるRegisterNewAcct.cshtmlの私のコード

    <div data-role="page" data-theme="a">
<div data-role="header" data-theme="a">
    <a href="#CancelDialogPage" data-icon="arrow-l" data-rel="dialog" id="opencanceldialog">Cancel</a>
    <h1>@ViewBag.Title</h1>
</div>
<h2>New Account</h2>
<div data-role="content" data-theme="a">
    @using (Html.BeginForm())
    {
        @Html.ValidationSummary(true, "Registration Failed! Check your Registration Details.")
        <div>
            <fieldset>
                <div>@Html.LabelFor(u => u.NewAcctName)</div>
                <div>
                    @Html.TextBoxFor(u => u.NewAcctName)
                    @Html.ValidationMessageFor(u => u.NewAcctName)
                </div>

                <div>@Html.LabelFor(u => u.NewDispName)</div>
                <div>
                    @Html.TextBoxFor(u => u.NewDispName)
                    @Html.ValidationMessageFor(u => u.NewDispName)
                </div>

                <div>@Html.LabelFor(u => u.NewEmail)</div>
                <div>
                    @Html.TextBoxFor(u => u.NewEmail)
                    @Html.ValidationMessageFor(u => u.NewEmail)
                </div>

                <div>@Html.LabelFor(u => u.NewPassword)</div>
                <div>
                    @Html.PasswordFor(u => u.NewPassword)
                    @Html.ValidationMessageFor(u => u.NewPassword)
                </div>
                <input type="submit" id="validatenewacct"  value="Save" data-theme="b" /> <!-- THIS IS THE SUBMIT BUTTON AND WILL CALL MY JQUERY -->
            </fieldset>
        </div>
    }
</div>

編集

私のcshtmlの下の私のJavascript

    @section Scripts{
<script>
    $(document).ready(function(){

        $("#validatenewacct").click(function(e) {
           $.ajax({
                     type: "POST",
                     data: $('form').serialize(),
                     url: "/Home/ValidateNewAccount",
                     contentType:"application/json; charset=utf-8",         
                     success: function (result) {
                     alert("ok: "+ result);
                     },
                     error: function (result) {
                         alert('Oh no: '+ result);
                     }
                 });
            });
        });
    });

</script>}

HomeController.cs の背後にあるコード

        [HttpPost]
    public ActionResult ValidateNewAccount(Models.HomeModel user)
    {
        if (ModelState.IsValid)
        {
            return Json("True");
        }
        else
        {
            return Json("false");
        }
        return View(user);
    }

Firebug エラー

「/」アプリケーションでサーバー エラーが発生しました。無効な JSON プリミティブ: NewAcctName。説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.ArgumentException: 無効な JSON プリミティブ: NewAcctName。

ソース エラー:

現在の Web 要求の実行中に未処理の例外が生成されました。例外の発生元と場所に関する情報は、以下の例外スタック トレースを使用して特定できます。

4

2 に答える 2

0

コントローラー名にコントローラーを追加する必要はありません。

それ以外の

url: "/HomeController/ValidateNewAccount"

する必要があります

url: "/Home/ValidateNewAccount"

あなたが示したjQueryValidateNewAccountでは、コードビハインドで示したコントローラーはRegisterNewAccount

于 2013-05-02T08:40:48.893 に答える