C# 如何使用angularJs将数组对象传递给web api方法
我正在创建一个客户端脚本,使用C# 如何使用angularJs将数组对象传递给web api方法,c#,angularjs,asp.net-web-api,C#,Angularjs,Asp.net Web Api,我正在创建一个客户端脚本,使用$http将字典对象类型发送到web api方法,如下所示: $scope.SearchPolicyDetails = function (data) { var searchPolicy = new Array(); searchPolicy["InsuredName"] = data.InsuredName; searchPolicy["PostalCode"] = data.PostalCode; searchPolic
$http
将字典对象类型发送到web api方法,如下所示:
$scope.SearchPolicyDetails = function (data) {
var searchPolicy = new Array();
searchPolicy["InsuredName"] = data.InsuredName;
searchPolicy["PostalCode"] = data.PostalCode;
searchPolicy["LOB"] = data.LOB;
searchPolicy["AgencyName"] = data.AgencyName;
searchPolicy["Symbol"] = data.Symbol;
searchPolicy["PolicyNum"] = data.PolicyNum;
searchPolicy["MCO"] = data.MCO;
searchPolicy["expireswithin"] = data.expireswithin;
searchPolicy["SortFields"] = data.SortFields;
searchPolicy["SortOrder"] = data.SortOrder;
$http({
url: "http://localhost:53054/api/GetPoliciesBySearch",
dataType: 'json',
data: searchPolicy,
headers: {
"Content-Type": "application/json"
}
}).success(function (response) {
$scope.value = response;
})
};
我有这个WebAPI
方法:
public List<Dictionary<string,string>> GetPoliciesBySearch(Dictionary<string,string> policySearch)
{
return SpecializedHandler.GetAllPolicies(policySearch).IterativeResource;
}
public List GetPoliciesBySearch(字典策略搜索)
{
返回SpecializedHandler.GetAllPolicys(policySearch).IterativeResource;
}
但是我没有收到这个方法的对象
我在chrome控制台中看到此错误:
您需要定义一个类并使用它,而不是在API操作中使用字典
class PolicyRequest
{
public string InsuredName { get; set; }
public string PostalCode { get; set; }
public string LOB { get; set; }
...
}
searchPolicy[“InsuredName”]=searchPolicy.InsuredName。这不是一个数组,而是一个json对象,具有InsuredName等属性。使其成为一个数组。你可以做:
var searchPolicy=[];
searchPolicy.push(data.InsuredName)看起来有很多事情需要考虑: 首先:clientside创建的对象不会转换为
列表
,因此,要使其按我们所希望的那样工作,我们必须进行一些更改。考虑:
var searchPolicy = {};
searchPolicy['InsuredName'] = data.InsuredName;
searchPolicy['PostalCode'] = data.PostalCode;
//etc (see below for another crucial piece)
第二:在$http
中调用的代码没有针对任何特定的方法。考虑下面的一些事情:
$http({
url: "http://localhost:53054/api/GetPoliciesBySearch",
dataType: 'json',
method: 'POST',
data: JSON.stringify(searchPolicy),
headers: {
"Content-Type": "application/json"
}
}).then(successHandler, errorHandler);
//try to avoid the deprecated success / error functions
function successHandler(response){
$scope.value = response;
}
function errorHandler(response){
//I strongly consider this for debugging
console.log(response);
}
第三:考虑在WebAPI控制器中接受标准<代码>字典>代码,因为新对象不应该是字典列表,而是平板字典。()
最后:从错误消息来看,路由可能会混淆;确保WebApiConfig.cs中有类似于以下内容的路由设置:RouteTable.Routes.MapHttpRoute("GetPoliciesBySearch",
"api/getpoliciesbysearch",
defaults: new
{
controller = "{your controller name here}",
action = "GetPoliciesBySearch"
});
我认为您的代码和UI在不同的项目中,可能是您没有在web.config或WebApiConfig.cs中配置CORS。你可以点击这个网址
浏览器开发工具网络中的请求状态是什么?为什么不直接将
数据传递到$http
?同样缺少方法
方法也可以。。但是,如何发送到具有dictionary对象@charlietflso的方法,您在浏览器开发工具网络中看到了什么?当方法
丢失时,也看不出它是如何好用的。还有,你为什么不使用错误处理程序呢?我已经在我的帖子中修改并添加了pic@charlietfl@DotNetDeveloper. 这通电话是邮寄还是收件。基于命名约定,我假设您正在尝试获取?谢谢。它现在正在工作。添加->var cors=new EnableCorsAttribute(“,”,“*”);配置使能cors(cors);在WebApiConfig.cs中,并已解决。