[asp.net-mvc]asp.net mvc index 操作后 ajax 将自动调用

标签: Asp.net-MVC ajax
发布时间: 2016/10/9 6:18:14
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有一个在数据库中创建一条记录的操作︰

 [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "Id,Name,Description")] SampleViewModel sampleVM)
    {
        try
        {
            _service.Add(sampleVM);
            this.ShowMessage(new ToastMessage(ToastType.Success, "Record Added", ToastrDisplayType.TopLeft));
        }
        catch (Exception ex)
        {
            this.ShowMessage(new ToastMessage(ToastType.Error, ex.Message, ToastrDisplayType.TopLeft));
            return Json("failed");
        }

        return Json("success");
    }

这一行动是由 AJAX 调用的︰

 $().ready(function () {
        $("#btnSave").click(function () {
            var serviceURL = '';

            var sample = {
                "Id": $('#hdnId').val(),
                "Name": $("#txtName").val(),
                "Description": $("#txtDescription").val(),
            };

            if (save_method == 'add') {
                serviceURL = '@Url.Action("Create", "Samples")';
            }
            else if (save_method == 'edit') {
                serviceURL = '@Url.Action("Edit", "Samples")';
            }

            $.ajax({
                type: "POST",
                url: serviceURL,
                data: addRequestVerificationToken(sample),
                success: function (data, textStatus, jqXHR) {
                    handleAjaxMessages();
                },

            });
        });
    });

问题是创建行动结束后将自动调用索引操作︰

[HttpGet]
    public ActionResult Index()
    {
        return View();
    }

提琴手快照

因为索引操作称为,如何调用创建操作只 (不调用索引操作),是不会显示土司消息吗?

解决方法 1:

所以你 "#btnSave"<button type="submit" /> 按钮。浏览器将执行以下操作顺序︰

  1. 调用您自己的 click 处理程序,,你有你的代码所示。
  2. 邮政 <form> 您的按钮是在服务器和重新加载页面它给出的答案。

你有两种选择︰ 要么你移除该窗体,并有一个常规的 <button> (没有 type="submit" ),或你有点修改你的 click 处理程序︰

$("#btnSave").click(function (event) {
        event.preventDefault(); // notice this line
        var serviceURL = '';
赞助商