我在C#中编写了下面的get-api-Route,看起来如下。。。
[HttpGet]
[Route("ReadAllAppBased")]
public List<Feedback> ReadAllAppBased(IEnumerable<string> Apps, string CAT)
{
return null;
}
但是当我在JS中发送HTTP请求时,我无法看到我的Collection。请参阅以下JS代码。下列的
axios.get('http://localhost:63464/api/FeedBack/ReadAllAppBased',
{
params: { Apps: ["TESTING 3", "TESTING 123"], CAT: "TESTING" }
})
.then(res => {
return res.data;
})
.then(res => {
console.table(res);
});
请知道我正在用C#打电话。我看不到应用程序。我可以看到CAT的数据。
我想知道如何解决这个问题,因为我需要能够发送一个字符串集合,该集合需要在C#中从JS接收。
请尝试在axios中向您的请求发送以下Url。。。
axios.get("/api/FeedBack/ReadAllAppBased?Apps=TESTING%203&Apps=TESTING%20123&CAT=TESTING")
.then(res => {
return res.data;
})
.then(res => {
console.table(res);
});
有关绑定参数的详细信息,请参阅将整数数组传递给ASP.NET Web API?
按如下方式尝试使用JSON.stringify
:
var data= {};
data.Apps= ["TESTING 3", "TESTING 123"];
data.CAT= "TESTING";
var dataJson= JSON.stringify(data);
然后传递dataJson
作为参数。
编辑:忘记考虑服务器端的更改。将ReadAllAppBased
中的IEnumerable<string> Apps
参数更改为string dataJson
,并在axios.get
中将params
部分替换为params: {
dataJson: dataJson
}
。
在ReadAllAppBased
方法中,使用Newtonsoft.Json
如下:
var params = JsonConvert.DeserializeObject<DataJson>(dataJson);
您的DataJson
类如下:
class DataJson{
public List<string> Apps {get; set;}
public string CAT {get; set;}
}
现在params
应该包含Apps
&CCD_ 16。
希望有帮助。
注意:由于您正在发送集合,您最好考虑使用axios.post
方法,因为参数可能太长。
在功能参数之前丢失[From Route]
[HttpGet]
[Route("ReadAllAppBased")]
public List<Feedback> ReadAllAppBased([From Query]IEnumerable<string> Apps, [From Query] string CAT)
{
return null;
}
那么在JS方面,我需要发送@robsonrosa的建议。