2010-01-13 81 views
1

我在ProceduresControlller以下功能:爲什麼Post代碼在jQuery加載時被觸發?

Function Add(ByVal bpid As Integer) As ActionResult 
    Return View(GetAvailableProcedures(bpid)) 
End Function 

<AcceptVerbs(HttpVerbs.Post)> _ 
Function Add(ByVal bpid As Integer, ByVal code As String, ByVal covered As Boolean) As ActionResult 
    AddProcedure(bpid, codes, covered) 
    Return View("Close") 
End Function 

我通過jQuery加載的添加對話框,如下所示:

$("#dialog").load(
    "/Procedures/Add", 
    { bpid: 123 }, 
    function(data) { 
     alert(data); 
    }); 

這是失敗的,因爲它調用Post方法(其中「覆蓋「不能爲空)而不是Get。我嘗試裝飾<AcceptVerbs(HttpVerbs.Get)>獲取,但它不會改變結果。

爲什麼會觸發郵政,我該如何獲得它?我意識到我可以改變名稱而不是模棱兩可,但我想知道爲什麼它不會選擇Get,如果我只是傳遞「bpid」。

回答

3

jQuery API reference for Ajax.load

GET請求將被默認執行 - 但如果你在任何額外的參數傳遞一個對象的形式/圖(鍵/值對),則POST會發生。作爲字符串傳遞的額外參數仍將使用GET請求。

所以我想你可以改變它的東西,如:

$("#dialog").load(
    "/Procedures/Add", 
    { "bpid" : "123" }, 
    function(data) { 
     alert(data); 
    } 
); 

HTHS,
查爾斯

+0

是的,完全忘了這一點事實。謝謝。 – gfrizzle 2010-01-13 21:43:32

相關問題