将复杂对象从Angularjs传递和检索到Web Api

将复杂对象从Angularjs传递和检索到Web Api,angularjs,asp.net-web-api2,Angularjs,Asp.net Web Api2,我在angular中有一个表单,其中用户输入各种条件,然后我希望将这些条件传递给WebAPI,并在运行查询后获得结果。我最初认为这是一个Get,但在将复杂对象传递到webapi时遇到了麻烦。在得到一些建议后,我使用了一个Post,并且能够通过在WebAPI中运行查询的条件,但是我在返回结果时遇到了麻烦。运行WebAPI方法并获取结果。但我没有看到数据服务的结果 如果查询的条件是多个字段,有些是列表,那么最好的方法是什么?我找不到任何好的例子 以下是Web Api方法: [HttpPost] pu

我在angular中有一个表单,其中用户输入各种条件,然后我希望将这些条件传递给WebAPI,并在运行查询后获得结果。我最初认为这是一个Get,但在将复杂对象传递到webapi时遇到了麻烦。在得到一些建议后,我使用了一个Post,并且能够通过在WebAPI中运行查询的条件,但是我在返回结果时遇到了麻烦。运行WebAPI方法并获取结果。但我没有看到数据服务的结果

如果查询的条件是多个字段,有些是列表,那么最好的方法是什么?我找不到任何好的例子

以下是Web Api方法:

[HttpPost] public IEnumerable Post[FromBody]频繁访问PawnerReportCriteria标准 { var repo=新的频繁报告; var结果=repo.GetReportcriteria; 返回结果; }`

以下是数据服务:

function getFrequentPawner(criteria) {
            return $http.post("/api/FrequentPawner/Post", criteria)
                .then (getFrequentPawnerComplete)
                .catch(getFrequentPawnerFailed);
            function getFrequentPawnerComplete(response) {
                var x = response
                return response.data.results;
            }
            function getFrequentPawnerFailed(error) {
                alert("XHR failed for frequent pawner report: " + error.responseText);
            }
        }
以下是控制器代码:

function getTopPawnerResults(criteria) {

            return DataContext.getFrequentPawner(criteria)
                .then(
                function (result) {
                    vm.frequentPawnerReport = result.data;

                    return vm.frequentPawnerReport;
                });
        }

只需使用JSON即可。使用JSON.stringify将JSON对象解析为字符串并发布。类似地,从服务器返回JSON字符串,并将其分配给Angular中的变量。它将自动转换为JSON对象。

我认为当您发出post请求时,您需要有一个回调函数,当您的Web Api返回时将调用该函数。在该回调函数中,您可以更新$scope变量,这将使您的web ui显示来自服务器的响应。你可以在这里找到我的意思的一个例子:

其要点是: $http{ 方法:“POST”, url:“/path/to/your/web/api”, 功能成功{ log“成功执行了api调用”; $scope.response=response;//将其更改为与服务器响应所需的数据相匹配 }, 功能失效{ console.error“有一个错误”; $scope.failure=failure;//更改此选项以匹配失败响应 } ;

感谢您的回复。该项目是web表单和angularjs的混合体。我正在迁移应用程序,没有注意到该表单存在冲突,导致回发,并使结果看起来无法返回。我将表单放入单独的项目中,并能够获得我想要的结果。

请显示代码t了解到目前为止您已经尝试过的内容。如果您为了清晰起见添加代码,用户将更有可能为您提供帮助。使用post或get不应基于我最初认为这是get,但在将复杂对象传递到Web时遇到问题。我真的不清楚具体问题是什么。get或p都不应存在服务器响应问题ostI添加了我正在编写的代码。