2014-09-22 2 views
1

저는 AngularJS 오해가 있습니다. 또한 백엔드 용 WebApi에 익숙하지 않지만 시도합니다. 버튼 클릭만으로 표시되는 모달 형식입니다 (제출). '제출'을 클릭하면 데이터베이스의 내용이 업데이트됩니다. 그래서 나는 POST에 대해 생각했다.요청에 일치하는 컨트롤러에서 동작을 찾을 수 없습니다. AngularJS POST 오류

AppModule.factory('editResult', function($http) 
{ 
return { 
    postResult: function(id, res) { 
     return $http.post('/api/MatchesAdmin/'+id, res); 
    } 
}; 
}); 

이 서비스는 실제 게시 작업을 수행해야합니다 (컨트롤러의 제출 기능에서 postResult를 호출합니다).

[HttpPost] 
    public HttpResponseMessage PostMatch(int id,string result) 
    { 
     MatchDTO match= _matchService.GetById(id); 
     match.Result = result; 
     _matchService.Update(match); 

     return Request.CreateResponse(HttpStatusCode.OK); 
    } 

그러나 나는 다른 상황에서 다음과 같이 연주 : 나는 그것을 필요 ... WebApi 컨트롤러 (MatchesAdminController) 작업은 다음과 같습니다이없는 thaught로 은 내가 AppModule.config에 아무것도 설정하지 않은 그리고 효과가있었습니다. 조치가 없었다

요청을 일치 없음 HTTP 리소스를 찾을 수 없었다

URI ...../API/MatchesAdmin/1 '

:하지만 지금, 아마 때문에 모달 형태가 아닌 슈어, 그것은 말한다 요청에 일치하는 컨트롤러 'MatchesAdmin'에 있습니다 (단, 작업이 있음)

왜 그런가요? 나는 또한 WebApi.config를 확인하고 괜찮아 보였다. ...

답변

1

음, 드디어 답을 얻었다. 나는 실제로 무엇을 찾아야할지 몰랐다. 문제는 제가 WebApi.config를 올바르게 구성하지 못하고 있다는 것입니다. 나는 라우팅에 대한 자세한 내용을보고, 나는 여기에 유래에이 대답 우연히 :

[1] Web API routing with multiple parameters

내가 여러 매개 변수, webApi 라우팅과해야 할 일을했을 것을 알고하지 않았다. 이 업데이트가 되었기 때문에 PUT.The 공장은 다음과 같이 수정에 , 내가 POST를 변경 :

AppModule.factory('editResult', function($http) 
{ 
return { 
    putResult: function(id, res) { 
     return $http.put('/api/MatchesAdmin/PutMatch/' + id+'/'+res); 
    } 
    }; 
}); 

또한, WebApi.config 내가 이제이 있습니다

config.Routes.MapHttpRoute("UpdateMatchResult", "api/{controller}/{action}/{id}/{result}", 
      new 
      { 
       id=UrlParameter.Optional, 
       result=UrlParameter.Optional 
      }); 

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

글쎄, 나는 이것이 완전히 정확함을 자극하지는 않지만, 지금은 효과가 있습니다 ....

관련 문제