2012-11-19 83 views
2

我正在嘗試使用超鏈接提交Ajax.BeginForm,而不是提交按鈕。我提交按鈕測試和動作識別通過測試Request.IsAjaxRequest基於出任阿賈克斯,但如果我嘗試以下IsAjaxRequest返回false:通過ActionLink提交Ajax.BeginForm

<a href="javascript:void(0)" onclick="javascript:document.forms[0].submit(); return false;">Update</a> 
+0

爲什麼不堅持提交按鈕? – hawkke

+1

這是一個要求,但我找到了解決方法,我使用鏈接來觸發提交按鈕單擊。我有提交按鈕隱藏在頁面上。 – user1790300

回答

4

的形式掛到微軟的Ajax庫,這樣你就可以只是調用form.submit(),因爲有線AJAX事件沒有激活。您有幾種選擇:

  • 使用一個提交按鈕,而不是鏈接
  • 降MS Ajax的東西,手工線了與jQuery的AJAX的職位(這是什麼我會做)
  • 調用MS阿賈克斯提交功能

對於第三個選項,而不是

onclick="javascript:document.forms[0].submit(); return false;" 

嘗試

onclick="javascript:$('#form').onSubmit(); return false;" 

但是我從來沒有用過它,所以我不知道它是否會起作用。你也可以看看here的解決方案,因爲它聽起來就像你正在努力完成的。

+0

'unobtrusive-ajax.js'監聽表單提交事件 - 所以只需調用'form.submit' *應該*觸發Ajax腳本。 http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.unobtrusive-ajax.js – McGarnagle

+0

@McGarnagle,它並不總是奏效。在視圖內部,在意義上的form.submit()調用將起作用,但如果在JS文件中執行form.submit()並將目標對象定義爲unobtrusive-ajax.js不會觸發工作。 –