2011-12-07 139 views
8

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

如果我用提琴手看请求,我看到帖子URL是“/ [Object NodeList]”,这显然是无效的。

我的剃刀代码如下:

@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> 
} 
+0

我应该提到我正在使用不引人注目的ajax库来解决这个问题。不确定这是否与MVC ajax的“突兀”味道有关。 – jbrunken

回答

11

问题是使用“action”作为提交按钮上的name属性。只要我将名称属性更改为不同的值,一切都开始完美。

我猜测有一个jQuery选择器在不显眼的ajax库中变得困惑。

+3

谢谢!相当长一段时间,我的头反对这个相同的问题。 – Japple

+0

yessss mate !!就是这样! – wodzu

0

你有不显眼的JavaScript在你的web.config或关闭?我第一次猜测这里的ms Ajax库是行为愚蠢的,所以启用不引人注目,所以我们得到jQuery的支持。

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

+1

我找到了修复程序。它必须处理提交按钮上的name属性。 – jbrunken

+0

提交按钮的名称改变了你发布的网址吗?听起来很奇怪! –

+0

我想我同意@AdamTuliper这里改变一个按钮的名称不应该改变你张贴到的网址。如果您再次将其更改为您之前没有使用过的东西,它是否会中断? – Eonasdan