0

これが私のコントローラーです。

public class ProductionStateController : ApiController
    {
        private readonly IFranchiseService _franchiseService;
        public ProductionStateController(IFranchiseService franchiseService)
        {
            _franchiseService = franchiseService;
        }

        [DataContext]
        public string PutProductionState(int id, FranchiseProductionStates state)
        {
          _franchiseService.ChangeProductionState(id, state);

           var redirectToUrl = "List";

           return redirectToUrl;
        }
    }

私のajax呼び出し;

self.selectState = function (value) {
                $.ajax({
                    url: "/api/ProductionState",
                    type: 'PUT',
                    contentType: 'application/json',
                    data: "id=3&state=Pending",
                    success: function (data) {
                        alert('Load was performed.');
                    }
                });
            };

私のルート;

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

エラーが発生してい404 File not foundます。

メソッドを be に置き換えても同じですPOST

私がそれを作れば、すべてがGETうまくいきます。

ここで何かが欠けています。どんな助けでも大歓迎です。

4

2 に答える 2

1

Web API フレームワークは、http 動詞で始まるアクション メソッドと一致します。名前PutProductionStateとしてはOKです。

私はこれを機能させることができました。問題は次のとおりです。アクション メソッドの 2 番目のパラメーターを [FromBody] 属性でマークする必要があります。

public string PutProductionState(int id, [FromBody] FranchiseProductionStates state)
        {
             _franchiseService.ChangeProductionState(id, state);

            var redirectToUrl = "List";

            return redirectToUrl;
        }

そして、ajax 呼び出しは次のようになります。

self.selectState = function (value) {
                $.ajax({
                    url: "/api/ProductionState/3",
                    type: 'PUT',
                    contentType: 'application/json',
                    data: "'Pending'",
                    success: function (data) {
                        alert('Load was performed.');
                    }
                });
            };

URL に追加された id パラメータと文字列化されたデータに注意してください。

ありがとう!

于 2013-08-13T12:55:50.497 に答える