我有以下 api 控制器:
[Route("api/[controller]")]
[ApiController]
public class WeightingDefinitionsApiController : ControllerBase
{
[HttpPost]
public async Task<ActionResult<WeightingDefinition>> PostWeightingDefinition(int id)
{...
}
}
當我PostWeightingDefinition從 .Net 代碼中呼叫它時,它可以作業。現在我想使用呼叫從.cshtml檔案中呼叫此代碼jquery.ajax:
var apiurl = "/api/WeightingDefinitionsApi/";
var data = { id: 13 };
$.ajax({
url: apiurl,
type: 'POST',
dataType: 'json',
data:data,
success: function (d) {
alert("Saved Successfully");
},
error: function (x,y,z) {
alert("Error please try again");
}
});
如果我將此代碼連接到button.click()事件,則呼叫 api 控制器中的代碼,但id引數為零而不是 13。
我哪里錯了?
uj5u.com熱心網友回復:
您的 ajax 請求將 id 作為表單資料有效負載發送。發生這種情況是因為您沒有contentType為請求指定選項,jQuery.ajax()默認值為application/x-www-form-urlencoded; charset=UTF-8. [FromForm]因此,您必須向操作的 id 引數添加屬性:
[HttpPost]
public async Task<ActionResult<WeightingDefinition>>
PostWeightingDefinition([FromForm]int id)
{
...
}
當您沒有為 id 引數指定任何屬性時,[FromQuery]會推斷出,因此您必須將 id 作為查詢引數傳遞:
var apiurl = "/api/WeightingDefinitionsApi?id=13";
檢查以下鏈接:
ApiController 屬性 - 系結源引數推理檔案
jQuery.ajax()檔案
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/511762.html
標籤:jQuery阿贾克斯asp.net 核心asp.net-core-webapi
