0

私はasp.net Web APIを初めて使用するので、ばかげた質問である場合は裸にしてください。メソッドに値を送信できません。コードは以下の WebApiConfig にあります

config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}/{value}",
            defaults: new { value = RouteParameter.Optional }
        );

コントローラー内にメソッドがあります

[AcceptVerbs("GET")]
    [ActionName("Test")]
    public string Test([FromBody]string value)
    {
        return value;
    }

JavaScriptの中で私は$.ajaxをやっています

url: "WebApi2/api/FormsDesinger/Test"

data:"{'value':'Some Value'}"

ajax 呼び出しを行うたびに、メソッドが呼び出されますが、「値」は null です。誰が私が間違っているのか教えてください

4

3 に答える 3

0

他の回答の議論に基づいて(私は実際にあなたの問題を分類することを期待していました)、いくつか試してみてください:

  1. あなたのルートは"api/{controller}/{action}/{value}" コントローラですTestが、アクションもありますTest- 代わりにこのURLにPOSTしてみてください: /EnterpriseConsole/BPMUITemplates/Default/NextGenForms/WebApi2/api/FormsDesinger‌ /Test/Test (Test最後に二重に注意してください)

  2. Route テンプレートに制約を追加して、POST のみをサポートし、AcceptVerbs から GET を削除 constraints: new { httpMethod = new HttpMethodConstraint("GET") }します (デフォルトの後)。

  3. ルート テンプレートからビットを削除して、{action}状況が変わるかどうかを確認します

  4. 更新されたコントローラー コードをここに投稿してください

于 2013-05-08T19:32:36.333 に答える
0

実際に試行錯誤の方法で解決策を見つけましたが、そもそもなぜそれが機能しないのか、まだ答えを探しています。ここに作業コードがあります。

方法:

[AcceptVerbs("POST", "GET")]
    [ActionName("Test1")]
    public string Test(string id)
    {
        return id;
    }

WebApiConfig:

config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}"
        );

$.ajax私はURLの一部としてIDを渡しています 、url:"WebApi2/api/FormsDesinger/Test1?id=123", data:null

dataこれは正常に機能していますが、 inの一部として値を渡すことをまだ望んでい$.ajaxます。

みんな、お気軽にコメントしてください。他の選択肢も試す準備ができています.

于 2013-05-10T11:54:29.343 に答える