ASP.NET 核心 MVC Ajax 调用未将参数传递给 api 控制器方法

ASP.NET Core MVC Ajax call not passing parameters to api controller method

我正在尝试使用 ajax 调用 API 控制器方法并传递一些参数。正在调用 api 方法,但控制器方法中的值变为 null。

使用相同的 ajax 调用,另一个具有相同方法的控制器(不是 api 控制器)接收参数值和 returns 结果,但我无法将值传递给 api 控制器方法。请帮助

 $(document).ready(function ()
                {
                    $("#DropDownName").change(function ()
                    {
                        $.ajax({
                            type: "POST",
                            dataType: "text",
                            url: "@(Url.Action("SampleAction", "XYZController"))",
                            data: {
                                "param1": $("#DropDownName :selected").val(),
                                "param2": $("#input2").val(),
                                "param3": $("#input3").val()
                            },

                            success: function (response) {

                            document.getElementById("result").textContent = "Result: " + response;
                        },


                        });
                    }); 
                });

API 控制器方法

    [Route("api/[controller]")]
    [ApiController]
    public class XYZController : ControllerBase
    {
        [ActionName("SampleAction")]
        [HttpPost]
        public decimal SampleAction(string dropdownselectedvalue,decimal input2, int input3)
        {
         //code here - This method is getting called but getting null parameter values
        }
    }

像下面这样更改您的 ajax:

data: {
        "dropdownselectedvalue":$("#DropDownName :selected").val(),
        "input2": $("#input2").val(),
        "input3": $("#input3").val(),
},

确保在您的后端代码中添加 FromForm

[Route("api/[controller]")]
[ApiController]
public class XYZController : ControllerBase
{
    [ActionName("SampleAction")]
    [HttpPost]
    public decimal SampleAction([FromForm]string dropdownselectedvalue,
        [FromForm] decimal input2, [FromForm] int input3)
    {
        return input2;
        //code here - This method is getting called but getting null parameter values
    }
}