0

現在のコンテキストの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開発ツールのエラーが発生していないため、エラーはルート構成に関連していると思います。どんな助けでも大歓迎です。

4

2 に答える 2

2

URIの複数のクエリ文字列パラメータは次のように区切る必要があります&-あなたは...?の前にありましたId2

JavaScriptでこれを試してください:

var url = "api/employees/getemployeename?Id1=" + Id1 + "&Id2=" + Id2;
于 2013-01-04T02:20:59.033 に答える
1

Glimpseを使用してルートをデバッグしようとしましたか?

http://www.hanselman.com/blog/NuGetPackageOfTheWeek5DebuggingASPNETMVCApplicationsWithGlimpse.aspx

また、Fiddlerまたはcurlは、テスト要求を送信するための便利なツールです。

于 2013-01-04T01:55:27.783 に答える