2012-01-19 17 views
5

我在通過jquery post方法調用重載的C#函數時遇到問題。如何在Asp.Net MVC中通過JQuery調用C#函數重載2

我在C#兩種功能現在

string func(string a) 
string func(string a, string b) 

當我打電話其中有這樣

var url = '<%= Url.Action("func", "Team") %>';     
$.post(url, { a: "test" }, function (data) { 
}); 

jQuery的一個參數,它給了我這個錯誤

The current request for action 'func' on controller type 'TeamController' is 
ambiguous between the following action methods 

我功能想知道我該如何調用這些重載函數。 即時通訊使用Asp.Net MVC 2與C#

+1

@jim儘管標題和標籤可能暗示什麼,但這個問題幾乎沒有*只做JavaScript或jQuery –

+0

在火車上自動糾正讓我,「只是」應該是「與」,爲最後的評論有道理 –

+0

我也面臨這種情況,但在Web窗體而不是MVC。使用null作爲解決方法。 –

回答

7

ASP.NET MVC通常不允許操作重載。如果你想根據你發送給服務器的內容做不同的事情,那麼你應該考慮在兩個具有不同名稱的函數(顯然不同的動作名稱和不同的URL)之間分離處理。如果你想在代碼中保持超載,那麼你仍然應該用[ActionName("%some_name_here%")]屬性給它們裝飾不同的名字。

如果要保留單個動作名稱,請創建一個帶有兩個參數ab的「前端」動作,並在動作代碼中檢查是否b==null。如果b爲空,則調用func(a)過載,否則調用func(a,b)。

相關問題