我正在Ionic 1中开发跨平台应用程序,由Angularjs by Angularjs,我无法在ASP.NET Web服务中传递字符串列表。AngularJS代码:
var request = {
params:[]
};
request.params.push(jsonObjectA);
request.params.push({"someString" : "ABCDEF"});
$http({
method: 'POST',
url: targetUri,
data: request
})
这是我的Web服务,它采用列表参数
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string SearchBasedResult(List<string> Id, List<string> type, string storeid)
{
//some code
}
您应该将array string
发送到您的 api
as:
var Ids = ["id1", "id2"]
这是List<string> Ids
,或types
:
var types = ["type1", "type2"]
您必须将主题放在对象中并将其发送到API
:
var request = {
Ids: ["id1", "id2"],
Types = ["type1", "type2"],
StoreId: "123456"
}
$http({method: 'POST',header:{Content-Type: application/json},url: targetUri,data: request}).then(function(response)
{
console.log(response)
})
不要将列表用作参数类型,而是创建一个复杂对象作为一个包含您需要的列表的单个参数。
public class MyParamterObject
{
public List<string> Ids { get; set; }
public List<string> Types { get; set; }
public string StoreId { get; set; }
}
按照以下方式重写您的控制器,使用新对象作为参数:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string SearchBasedResult(MyParamterObject param)
{
//some code
}
Angular内部创建一个新对象并填充它,命名属性,如您的MyParameterObject中所述。
编辑
角呼叫变为:
var paramObject = {};
paramObject.Ids = idsList;
paramObject.Types = typesList;
paramObject.StoreId = "storeId";
var req = {
method: 'POST',
url: targetUri,
data: paramObject
};
$http(req);