私はMVCを初めて使用します。混乱はこの質問のタイトルを少し超えていると思いますが、初心者にとっては次のようになります。
public class TestController : ApiController
{
[HttpPost]
public bool ReceiveHunk(Alterity.Models.Async.HunkDTO hunk)
{
return true;
}
[HttpPost]
public bool A(int x) { return false; }
[HttpPost]
public bool B(int x) { return true; }
}
URLはコントローラーにのみルーティングされているようで(これは正しい用語ですか?)、パラメーターに基づいてメソッドが選択されているため、AまたはBの選択を呼び出すことはできません。2つのメソッドに(int x)があるので、どちらを呼び出すべきかわかりません。私の混乱は、私がそうするとき、次の事実によって悪化します:
$.ajax({
cache: false,
type: "POST",
url: ApiLocation + 'Test',
contentType: 'application/json',
dataType: "json",
data: JSON.stringify(5),
success: function (response) { }
});
それでもReceiveHunkメソッドに移動し、ハンクはnullになります。Bをコメントアウトしても、ReceiveHunkは引き続き呼び出されます。これは、フォームURLエンコードの代わりにJSONを使用しているという事実に関連していますか?同じシグニチャを持つメソッドごとに個別のApiControllerを用意する必要がありますか?URLにメソッド名が含まれるようにルーティング(またはwhatsit)を構成する方法はありますか?通常のコントローラーはURLにメソッド名を含めますが、なぜApiControllerを使用しないのですか?さらに、AまたはBのいずれかを変更してパラメーターをゼロにすると、メソッドが呼び出されず、例外も発生せずに、内部サーバーエラー(500)が発生します。これを解決するのに役立つ情報をいただければ幸いです。