【问题标题】:AJAX.BeginForm PostURL being corruptedAJAX.BeginForm PostURL 已损坏
【发布时间】:2011-12-07 21:31:13
【问题描述】:

我在尝试使用 ASP.NET MVC3 的 Ajax.BeginForm 方法时遇到了一个奇怪的问题。表单使用正确的操作属性正确呈现在页面上。但是,提交表单时,“OnFailure”事件返回“未找到”404 错误。

如果我用 fiddler 观看请求,我看到 post URL 是“/[Object NodeList]”,这显然是无效的。

我的 Razor 代码如下:

@using (Ajax.BeginForm("Save", "Items", new AjaxOptions { UpdateTargetId = "itemContainer", InsertionMode = InsertionMode.Replace, OnFailure = "onFailure"}))
{
    <div style="position:absolute; bottom:20px; left:200px;">
        <button type="submit" id="Save" name="action" value="Save">Save</button>
        <button type="submit" id="Cancel" name="action" value="Cancel">Cancel</button>
    </div>
}

【问题讨论】:

  • 我应该提到我正在使用导致问题的不显眼的 ajax 库。不确定这是否是 MVC ajax 的“突兀”风格的问题。

标签: ajax asp.net-mvc-3 razor


【解决方案1】:

问题在于提交按钮上的名称属性使用“操作”。一旦我将 name 属性更改为不同的值,一切都开始完美运行。

我猜在不显眼的 ajax 库中有一个 jQuery 选择器会混淆。

【讨论】:

  • 谢谢!很长一段时间以来,我一直在努力解决同样的问题。
【解决方案2】:

您的 web.config 中是否打开或关闭了不显眼的 JavaScript?我首先在这里猜测 ms Ajax 库的行为很愚蠢,所以启用不显眼的功能,以便我们获得 jquery 支持。

您的表单操作设置为什么?如果可以,请发布您的表单 HTML 元素。

【讨论】:

  • 我找到了解决办法。它与提交按钮上的名称属性有关。
  • 提交按钮的名称也改变了您发布的网址?听起来很奇怪!
  • 我想我同意@AdamTuliper 在这里更改按钮的名称不应该更改您发布到的网址。如果你再把它改成你以前没用过的东西,它会坏吗?
  • 是的,当使用不显眼的 Ajax 时,并且您有一个 type='submit' 和 name='action' 的按钮或输入,它会阻止回调正常工作。将 name 属性更改为“action”以外的任何属性都可以解决问题。
猜你喜欢
  • 2012-04-28
  • 1970-01-01
  • 2011-09-17
  • 2016-03-19
  • 1970-01-01
  • 1970-01-01
  • 2013-05-14
  • 2017-06-23
  • 2019-11-29
相关资源
最近更新 更多