2014-10-08 28 views
0

我需要將單個參數傳遞給Web API POST方法。帶有單個參數的POST返回404錯誤

以下是我的AJAX調用:

$http({ method: 'POST', url: "customers/ProcessCustomer/" + customerId }) 
    .success(function (data) { 

    }); 

其中customerIdGuid

而且我的控制器:

[HttpPost] 
[Route("customers/ProcessCustomer")] 
public void ProcessCustomer(Guid id) 
{ 
    //do some stuff 
} 

但是當我這樣做,我只得到一個找不到404錯誤。我究竟做錯了什麼?

+1

你在查詢字符串添加參數。這不是POST的工作原理 – Jonesopolis 2014-10-08 14:59:52

+0

@Jonesy'customerId'不是查詢字符串的一部分,它是路徑的一部分。 – Stijn 2014-10-08 15:01:33

+0

@Stijn你說得對。 Web API可以將其轉換爲POST參數。很高興知道,謝謝。 – Jonesopolis 2014-10-08 15:13:55

回答

1

您正在使用屬性路由,但您尚未在路由中指定id參數。改爲:

[Route("customers/ProcessCustomer/{id}")] 

有關更多示例,請參見Attribute Routing in Web API 2

0

當您將POST設爲某個操作方法時,數據未嵌入到網址中。相反,使用data場的設置,在你的Ajax調用對象:

// I didn't recognize what library you're using for the AJAX call, so this is jQuery 
$.ajax('customer/ProcessCustomer', { 
    data: { id: customerId }, 
    success: function() { /* woohoo! */ } 
});