2012-01-19 4 views
5

jquery postメソッドでオーバーロードされたC#関数を呼び出す際に問題が発生します。私はそれが私にこのエラーAsp.Net MVC 2でJQueryを使用してオーバーロードされたC#関数を呼び出す方法

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

Iを与えるこの

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

のようなjqueryの内の1つのパラメータを持つ関数を呼び出すとき

は私が

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

今C#での二つの機能を持っていますこれらのオーバーロードされた関数をどのように呼び出すことができるかを知りたい C#でAsp.Net MVC 2を使用しています

+1

@jimタイトルとタグが示唆しているものをディスパッチします。この質問はほとんどJavaScript * jQueryだけです。 –

+0

電車の自動修正が私に与えられました。わかります –

+0

私はこのような状況に直面していますが、WebフォームではMVCではありません。回避策としてnullを使用する。 –

答えて

7

ASP.NET MVCでは一般にアクションのオーバーロードは許可されていません。あなたがサーバーに送るコンテンツに応じて異なることをしたい場合は、異なる名前(異なったアクション名と異なるURLのように見える)を持つ2つの関数の間でseprating処理を考慮する必要があります。オーバーロードをコード内に保持したい場合は、[ActionName("%some_name_here%")]属性を使用してそれらの関数に異なる名前を付ける必要があります。

シングルアクション名を保持する場合は、2つのパラメータabを持つ「フロントエンド」アクションを作成し、アクションコードにb==nullがあるかどうかをチェックします。 bがnullの場合はfunc(a)を呼び出し、そうでなければfunc(a、b)を呼び出します。

関連する問題