C#Api Get-Route无法接收字符串集合.在传输数据时需要帮助



我在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的建议。

最新更新