Kur*_*ula 5 c# asp.net-mvc reactjs axios
我正在使用 axios get 方法并将参数传递给 asp.net mvc 控制器。我可以读取单个值。但我试图将所有值作为一个对象一起读取。我没有视图模型,我正在尝试将 params 读取为通用对象。在 c# 控制器中用作参数的 axios params 数据类型是什么?我为 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));
});
};
Run Code Online (Sandbox Code Playgroud)
C# 控制器代码
//Read parameter as individual strings
[HttpGet("[action]")]
public async Task<string> GET(string param1, string param2)
{
try
{
var url = BuildUri( param1, param2);
}
}
Run Code Online (Sandbox Code Playgroud)
这没有用
控制器代码
//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;
}
Run Code Online (Sandbox Code Playgroud)
我找到了在 C# 中使用名称值对构建查询字符串的选项,但不确定如何将 axios 参数作为名称值对对象传递给 c# 控制器。参考:https : //codereview.stackexchange.com/questions/91783/constructing-a-query-string-using-stringbuilder
小智 3
可能有更好的方法来做到这一点,但一种方法是使用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);
}
}
Run Code Online (Sandbox Code Playgroud)
另外,您不应该使用没有 catch 块的 try 块。我希望这有帮助
| 归档时间: |
|
| 查看次数: |
3157 次 |
| 最近记录: |