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>

编辑

我的 Javascript 在我的 cshtml 下面

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

萤火虫错误

“/”应用程序中的服务器错误。无效的 JSON 原语:NewAcctName。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.ArgumentException:无效的 JSON 原语:NewAcctName。

源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

4

2 回答 2

0

您不必将控制器添加到控制器名称中。

代替

url: "/HomeController/ValidateNewAccount"

应该

url: "/Home/ValidateNewAccount"

在您显示的 jQuery 中,ValidateNewAccount但您在代码隐藏中显示的控制器是RegisterNewAccount

于 2013-05-02T08:40:48.893 回答
0

我认为这是因为您还没有编写 document.ready 函数。尝试这个:

$(document).ready(function() {

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

});

编辑:

还有一件事你的 Action ValidateNewAccount 需要一个参数,而你没有在 $.ajax 中给他们任何参数。也试试这个: $(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);
                     }
                 });
        });

});
于 2013-05-02T09:32:02.080 回答