首页 > 解决方案 > ASP.NET Core MVC Ajax 调用未将参数传递给 api 控制器方法

问题描述

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

使用相同的 ajax 调用,具有相同方法的另一个控制器(不是 api 控制器)接收参数值并返回结果,但我坚持将值传递给 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
        }
    }

标签: c#ajaxapiasp.net-coremodel-view-controller

解决方案


改变你的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
    }
}

推荐阅读