【问题标题】:Ajax.ActionLink not postingAjax.ActionLink 未发布
【发布时间】:2015-11-15 16:38:39
【问题描述】:

我遇到了ajax.actionlink 的问题

我的代码是:

@Ajax.ActionLink("Delete", "DeleteCategory", new { id = item.ID }, new AjaxOptions
               {
                   HttpMethod = "POST",
                   OnFailure = "function() { alert('fail'); }",
                   OnSuccess = "function() { alert('success'); }"
               })

控制器是

 [HttpPost]
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult DeleteCategory(int id)
        {

            categoryBLL.DeleteCategory(id);
            return RedirectToAction("CreateCategory");

        }

但由于某种原因,我无法让它工作,它没有被触发...... 它只重定向到/DeleteCategory/Delete/{id}

而不仅仅是发布到控制器并执行它..

我在这里做错了什么?

【问题讨论】:

  • 您是否正确加载了客户端脚本?
  • 如果您点击 GET 方法而不是发布它是因为您没有包含 jquery.unobtrusive-ajax.js(或者您的脚本顺序错误或有重复)

标签: jquery ajax asp.net-mvc-5


【解决方案1】:

首先添加对包MicrosoftMvcAjax.Mvc5的引用,然后将js添加到您的页面:

以及 js 引用:

<script src="~/Scripts/MicrosoftAjax.js"></script>
<script src="~/Scripts/MicrosoftMvcAjax.js"></script>

此外,当您将@ajax.actionlink 与 HTTP Post 一起使用时存在一些问题,一切正常,get:

 @Ajax.ActionLink("Read", "Read", new { id = 1 }, new AjaxOptions
{
   HttpMethod = "Get",
   OnFailure = "function() { alert('fail'); }",
   OnSuccess = "function() { alert('success'); }"
})

[HttpGet]
public ActionResult Read(int id)
{
    return RedirectToAction("CreateCategory");
}

但是,对于 POST,请使用帮助器:@Ajax.BeginForm() 或类似 jQuery 的库。

【讨论】:

  • @Ajax.ActionLink() 中您输入了new { id = 1 }。这对于静态值来说已经足够了。现在如果我想传递一个textbox 的值怎么办。我该怎么做?我有强类型视图。
【解决方案2】:

谢谢斯蒂芬·穆克。

问题在于我的脚本顺序..&lt;script src="~/Scripts/jquery.unobtrusive-ajax.js"&gt;&lt;/script&gt;

还有。感谢您的帮助,感谢其他人。

【讨论】:

    猜你喜欢
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 2011-07-19
    • 1970-01-01
    • 2020-09-23
    • 1970-01-01
    • 2011-03-11
    相关资源
    最近更新 更多