POST和GET在MVC 4中同时执行

时间:2013-09-06 19:05:23

标签: c# javascript asp.net-mvc razor

我在点击表格中的项目后尝试编辑字段。

我在表中的每个对象上添加了一个on clcik事件,如下所示:

onclick="itemEdit(this)

我的javascript函数看起来像:

  function itemEdit(e) {
        console.log($(e).attr("id"));
        var itmId = $(e).attr("id");
        $.ajax({
            url: '@Url.Action("Index", "Scraping")',
            data: {itemId: itmId},
            type: 'POST',
            success: function(data) {
                alert(data);
            }
        });
    }

我在Index方法中所做的是在页面顶部以更详细的方式加载点击的项目,如下所示:

 public ActionResult Index(string itemId)
        {
            if (itemId != null)
            {
                im.loadItem(itemId.ToString());

            }
            else
            {
                if (im.lstEditModel.Count == 0)
                {
                    im.loadLists();
                }
            }
            return RedirectToAction("Index");

        }

我遇到的问题是每当我点击一个项目时,索引方法就会执行两次......从而造成一团糟。有什么帮助吗?

3 个答案:

答案 0 :(得分:0)

我在该方法上看不到[HttpPost]标记,但在方法结束时,您将重定向到另一个Index操作...通常会返回某种JSON数据而不是return RedirectToAction("Index"); ...这个陈述将按照你所描述的那样,调用你的Get Action。

来自MSDN

  

返回对浏览器的HTTP 302响应,这会导致浏览器向指定的操作发出GET请求。

答案 1 :(得分:0)

尝试停止事件冒泡。

function itemEdit(e) {

e.stopPropagation();       

console.log($(e).attr("id"));
        var itmId = $(e).attr("id");
        $.ajax({
            url: '@Url.Action("Index", "Scraping")',
            data: {itemId: itmId},
            type: 'POST',
            success: function(data) {
                alert(data);
            }
        });
    }

答案 2 :(得分:0)

请忽略这一点,错误地我忘了把href ="#"添加onClick事件时导致浏览器重新加载我的javascript代码。我输入了href =""