【问题标题】:Ajax.ActionLink is not POSTingAjax.ActionLink 不发布
【发布时间】:2011-03-05 04:16:41
【问题描述】:

我正在尝试通过 POST 而不是 GET 来导航到 MVC 操作。 (该操作是 DELETE,我不希望它可以通过外部链接访问。)

我正在使用由生成的网格中的链接

 Ajax.ActionLink("Remove", "Delete", new { saID = Model.Said, id = e.id }, new AjaxOptions { HttpMethod = "POST", Confirm = "Are you sure you want to delete this item?" })

生成以下 HTML:

<a href="/Equipment/Delete/102424/229933" onclick="Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, confirm: 'Are you sure you want to delete this item?', httpMethod: 'POST' });">Remove</a>

我的问题是,当我单击链接时,我通过 GET 而不是 POST 到达删除操作,并且没有出现“确认”对话框。我已经在谷歌上搜索了几个小时,并且一直缠绕在车轴上。我做错了什么?

【问题讨论】:

    标签: ajax model-view-controller actionlink


    【解决方案1】:

    我想在接受的答案下将此作为评论添加,但不知何故没有选择将此作为评论输入,因此将其添加为答案

    就我而言,我必须在 MicrosoftAjax.js 和 MicrosoftMvcAjax.js 之前添加“jquery.unobtrusive-ajax.min.js”,然后操作链接开始启动 ajax 请求。但这是一个 GET,我想要发布,所以我只是在“AjaxOptions”中添加了HttpMethod = "Post"。就是这样。

    【讨论】:

      【解决方案2】:

      您的页面上可能还有其他一些 javascript 错误导致处理 AJAX POST 的 javascript 无法运行。在这种情况下,链接会退回到它的默认行为 (GET)。最简单的做法是使用 IE8 开发人员工具或 Firefox/Firebug(我更喜欢这些),并在页面加载或调用您的操作时查看控制台中是否有任何错误。如果您使用的是 IE,则需要使用 Internet Options -&gt; Advanced 并取消选中 Disable script debugging

      修复您的 javascript 错误,我认为它会开始工作。

      【讨论】:

      • 你的权利:我得到“Sys.Mvc”是未定义的——尽管我已经在我的 MasterPage 中包含了所有三个 JS 脚本文件(MicrosoftAjax、MicrosoftMvcAjax 和 jquery-1.4.1 -vsdoc) 我还需要做什么来定义 Sys.Mvc?
      • @Dave - 您是否按顺序包括它们? Sys.Mvc 在 MicrosoftMvcAjax.js 中定义,但它是通过调用 MicrosoftAjax.js 中的方法来实现的
      • 这似乎是问题所在。当我将提琴手连接到它时,只有三个脚本文件中的第一个(MicrosoftAjax.js)正在加载。我修复了这个问题,以便加载 MicrosoftMvcAjax.js(其中包含 Sys.Mvc 的定义),并且它确实起飞并运行 - 好吧,有点。我现在收到确认框,但没有收到删除表单。但我明天会调查的。
      猜你喜欢
      • 2015-11-15
      • 1970-01-01
      • 1970-01-01
      • 2018-06-30
      • 2014-11-25
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多