javascript - $http 调用 Web API 2 不传递参数

标签 javascript c# angularjs asp.net-web-api2

这是我的 C# WebAPI2 Controller ,它受到攻击:

[HttpGet, Route("bycaseidlist/{idArray}")]
public async Task<IHttpActionResult> GetByCaseIdList([FromUri] List<int> idArray)

这是电话:

var idArray = [4,4,2,4];
var url = baseUrl + 'api/cases/bycaseidlist/' + idArray ;

$http.get(url)

问题是 API 没有获取数组,它获取的是...this:

enter image description here

换句话说,数组只有一个值:0。为什么会发生这种情况?我如何解决它?似乎符合this answer ,但它不起作用。我应该把它传递到体内吗?我觉得我错过了一些明显的东西。

最佳答案

Get ActionMethods 可以将对象作为参数。但是,当参数不是 .net 原语时,默认行为是查看主体。为了强制操作方法使用模型绑定(bind)器从请求中读取对象数据,可以使用 [FromUri] 或 [ModelBinder] 属性来修饰该参数。 (请注意,还有其他方法可以执行此操作,包括执行参数绑定(bind)规则,但这对于您在此处尝试完成的任务来说可能有点过头了)。这是一个解决您提出的原始问题的实现。

 <script type="text/javascript">
    var ajaxCall = function (myArry) {
        var ajaxProperties = {};
        ajaxProperties.url = "/api/Mul/Mutiply";
        ajaxProperties.type = "Get";
        ajaxProperties.data = {};
        ajaxProperties.data.numbers = myArry;
        ajaxProperties.contentType = "application/json";
        console.log(ajaxProperties);
        ajaxProperties.success = function (data) {
            console.log(data);
        }
        ajaxProperties.error = function (jqXHR) {
            console.log(jqXHR);
        };
        $.ajax(ajaxProperties);

    };
    var getData = function (e) {

        var myArry = new Array();
        myArry.push($('input[name=num1').val());
        myArry.push($('input[name=num2').val());

        ajaxCall(myArry);
        return false;
    };
     </script>

Controller

    [HttpGet]
    public IHttpActionResult Multiply([FromUri] int[] numbers)
    {
        int result = 0;
        if(numbers.Length > 0)
        {
            result = 1;
            foreach (int i in numbers)
            {
                result = result * i;
            }
        }
        return Ok(result);
    }
}

关于javascript - $http 调用 Web API 2 不传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34183619/

相关文章:

c# - 应该在哪里订阅 AppDomain.UnhandledException?

javascript - Angular.js - 无法注入(inject)外部模块

javascript - 使用 Angularjs 单击按钮在另一个选项卡上打开 html

javascript - React 中的样式

javascript - JS : Display array item in textbox with onclick event?

javascript - If 子句无法正常工作

javascript - AngularJS - 在 $routeChangeStart 中运行 setInterval()

javascript - Angular .min.js :127 Error: [$controller:ctrlreg] angularJs

C# 在方法参数内等待

c# - LINQ 中的维恩图样式分组