2011-12-07 176 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