現在のコンテキストのJavascriptファイルからMVCコントローラークラスのASP.NetWebApiHTTPGETメソッドにアクセスする正しい方法は何でしょうか。次のスニペットは、document.ready本体の関数内にあります。
Javascript:
var Id1 = $('#EmployeePrimaryId').val();
var Id2 = $('#EmployeeSecondaryId').val();
var url = "api/employees/getemployeename?Id1=" + Id1 + "?Id2=" + Id2;
$.get(url, function (data) {
$('#EmployeeName').val(data);
});
現在、$。getで404エラーが発生していますが、ルーティングに関係がある可能性があります。この記事の「拡張例」:http ://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-and-action-selectionは、クエリ文字列パラメーターが適切な場合に選択されることを説明していますルーティングが設定されています。例ではIDのみのオーバーロードを使用するコントローラーメソッドが示されているため、ルートテンプレートにオプションのIDが必要かどうかはよくわかりませんでした。そのため、2つのルートを含めましたが、どちらも機能していません。また、コントローラークラスはApiControllerクラスを実装します。
Web Apiコントローラーメソッド:
[System.Web.Http.HttpGet]
public string GetEmployeeName([FromUri]int Id1, int Id2)
{
var data = _context.Employees
.Where(x => x.EmployeePrimaryId == Id1
&& x.EmployeeSecondaryId == Id2)
.Select(x => x.EmployeeName);
return data;
}
RouteConfigクラス:
private static void RegisterApiRoutes(RouteCollection routes)
{
routes.MapHttpRoute(
name: "Employees",
routeTemplate: "api/{controller}/{action}/",
defaults: new { controller = "Employees",
action = "GetEmployeeName",}
);
routes.MapHttpRoute(
name: "Employees",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new
{
controller = "Employees",
action = "GetEmployeeName",
id = RouteParameter.Optional
}
);
404通知以外にビルドまたはWeb開発ツールのエラーが発生していないため、エラーはルート構成に関連していると思います。どんな助けでも大歓迎です。