2016-11-11 56 views
4

我有一個的WebAPI控制器ASP.NET的WebAPI和角度支柱

public class MyController : ApiController 
{ 
    [HttpPost] 
    public SomeResult MyAction(string name, string message) 
    { 
     return SomeResult.???; 
    } 
} 

我有一個角控制器調用此方法

$http 
    .post("/api/My/MyAction", { name: "bob", message: "hello" }) 
    .then(function(xhr) { ... }, function(xhr) { ... }); 

我得到這個結果

服務器錯誤'/'應用程序。

無法找到該資源。

我做錯了什麼?

P.S.這不是網址......它在我使用HttpGet時起作用並將參數追加到查詢字符串中。

+0

請發表你的路由配置調用。 – toadflakz

+0

檢查對這個問題的答案http://stackoverflow.com/questions/40082163/webapi-httppost-endpoint-not-being-hit/40082757#40082757 –

+0

它可能只是一個錯字,但在您的示例中,操作名稱是「MyAction」,但是你使用的URL的角度是「MyAccount」。另外,正如第一位評論者所說,看到路由配置將很有用。 – ADyson

回答

2

對於發佈請求的多個屬性,可以在控制器中使用[FromBody]並創建ViewModel類。例如:

[HttpPost] 
     public HttpResponseMessage UpdateNumber([FromBody]UpdateNumberViewModel model) 
     { 
      //To do business 
      return Request.CreateResponse(HttpStatusCode.OK); 
     } 

UpdateViewModel:

public class UpdateViewModel 
    { 
     public int Id{ get; set; } 
     public string Title{ get; set; } 

    } 

角:

var model = {      
        Id: 1, 
        Title: 'Vai filhão' 
       } 

    $http.post('/api/controller/updateNumber/',model).then(function() { alert("OK"); }, function() {alert("something wrong"); }); 

你可以看到更多的細節如何網頁API它在這裏工作:https://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

+0

相似的另一種答案就在這裏,'[FromBody]'不應該是必需的複雜的類型,如這一點。只有在您嘗試在主體中傳遞簡單類型(例如字符串)時才需要它。請參閱https://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api – ADyson

+0

確切地說。我會編輯我的答案... –

2

我已經遇到了這個問題,如果你有谷歌有不同的方式來解決它。一個最簡單的要求只使用一個輸入物體在你的WebAPI控制器,所以在你的情況下只箱子一類

public class InputData { 
    public string name { get; set; } 
    public string message { get; set; } 
} 

然後用[FromBody]前綴您輸入更改爲新創建的對象(也許不是強制性的,看到@ ADyson評論)

public SomeResult MyAction([FromBody]InputData inputData) 
+0

''[FromBody]'對於像這樣的複雜類型不應該是必需的。只有在您嘗試在主體中傳遞簡單類型(例如字符串)時才需要它。見https://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api – ADyson

+0

@ADyson謝謝你的建議,從你的鏈接似乎合理的,它不是強制性 – Naigel