我正在尝试通过JavaScript在C#中为我的web api发送产品列表,但我的API不接受这些产品。我该如何通过呢?
这是我的模特
public class ProductModels
{
public int productId { get; set; }
public string description { get; set; }
public int quantity { get; set; }
public decimal amount { get; set; }
}
和我的API端点
[Route("api/pag_seguro/transactions/credit_card")]
public IHttpActionResult DoTransactionWithCreditCard(ProductModels[] products, string senderHash, string cardHash)
在Javascript中我试图像这样发送它
data.products = [{ "productId": 1, "description": "tupperware", "quantity": 1, "amount": 29.80 }];
$.ajax({
type: 'POST',
url: url + '/api/pag_seguro/transactions/credit_card?cardHash=' + cardHash + '&senderHash=' + senderHash,
data: data,
success: function (response) {
console.log(response);
},
dataType: 'json',
async: false
});
仍然关于此端点...如何将senderHash和cardHash作为POST参数发送,以便不会出现在网址中?
谢谢大家
答案 0 :(得分:2)
您需要将请求中的内容类型设置为
contentType:"application/json"
另外,发送时使用JSON.stringify
将数据转换为JSON格式。
试试这段代码:
$.ajax({
type: 'POST',
url: url + '/api/pag_seguro/transactions/credit_card?cardHash=' + cardHash + '&senderHash=' + senderHash,
data: JSON.stringify(data),
contentType: "application/json",
success: function (response) {
console.log(response);
},
dataType: 'json',
async: false
});
答案 1 :(得分:0)
试试这个
public IHttpActionResult DoTransactionWithCreditCard([FromUri] SiteInfo, siteInfoProductModels[] products)
您的siteinfo模型
public class SiteInfo
{
public string senderHash { get; set; }
public string cardHash { get; set; }
}
最后从动作标题中删除你的路线并在webapiconfig.cs中添加这样的新路线(并更改js文件集params liek this / param1 / param1)
config.Routes.MapHttpRoute(
name: "HashRoute",
routeTemplate: "api/{controller}/{action}/{senderHash}/{cardHash}"
);