[英]Reading Axios Get params in Asp.Net MVC controller
我正在使用axios get方法并将params传递给asp.net mvc控制器。 我可以阅读个人价值观。 但我试图将所有值一起读作一个对象。 我没有视图模型,我试图将params作为通用对象读取。 什么是axios params数据类型在c#controller中用作参数? 我为buildurl创建了一个单独的方法并验证了每个参数,但有没有任何选项可以立即验证所有参数?
这有效
反应代码
export const GetRequestCall = () => {
const getUrl = 'baseurl';
return new Promise((resolve, reject) => {
axios.get(getUrl, {
params: {
param1: 'abc',
param2: 'efg'
}
})
.then(response => {
}).catch(error => reject(error));
});
};
C#控制器代码
//Read parameter as individual strings
[HttpGet("[action]")]
public async Task<string> GET(string param1, string param2)
{
try
{
var url = BuildUri( param1, param2);
}
}
这没用
控制器代码
//Read parameters as a single object to do some logic. Tried
//[FromBody]object, Object, String as parameters datatypes for data
[HttpGet("[action]")]
public async Task<string> GET(Array data)
{
try
{
var url = BuildUri( param1, param2);
}
}
private static string BuildUri(string BaseUrl, string param1, string param2)
{
var uriBuilder = new UriBuilder(BaseUrl);
var query = HttpUtility.ParseQueryString(uriBuilder.Query);
if (!string.IsNullOrEmpty(param1)) { query["param1"] = param1; }
if (!string.IsNullOrEmpty(param2)) { query["param2"] = param2; }
uriBuilder.Query = query.ToString();
var url = uriBuilder.ToString();
return url;
}
我找到了在C#中使用名称值对构建查询字符串的选项,但不确定如何将axios params作为名称值对象传递给c#controller。 参考: https : //codereview.stackexchange.com/questions/91783/constructing-a-query-string-using-stringbuilder
可能有更好的方法,但一种方法是使用这样的object []参数:
[HttpGet("[action]")]
public string GET(object[] objects)
{
string param1 = objects[0] as string;
string param2 = objects[1] as string;
try
{
var url = BuildUri(param1, param2);
}
}
此外,您不应该使用没有catch块的try块。 我希望这有帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.