c# - 读取Axios获取Asp.Net MVC Controller 中的参数

标签 c# asp.net-mvc reactjs axios

我正在使用 axios get 方法并将参数传递给 asp.net mvc Controller 。我能读懂个人值(value)观。但我试图将所有值作为一个对象一起读取。我没有 View 模型,我正在尝试将参数读取为通用对象。在 C# Controller 中用作参数的 axios params 数据类型是什么?我为 buildurl 创建了一个单独的方法并验证每个参数,但是是否有任何选项可以同时验证所有参数?

这有效

react 代码

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# Controller 代码

     //Read parameter as individual strings
        [HttpGet("[action]")]
        public async Task<string> GET(string param1, string param2)
        {
            try
            {  
                var url = BuildUri( param1, param2); 
             }
         }

这不起作用

Controller 代码

 //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 参数作为名称值对对象传递给 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 block 的 try block 。我希望这有帮助

关于c# - 读取Axios获取Asp.Net MVC Controller 中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55602990/

相关文章:

asp.net - ViewEngines 会影响 Asp.Net MVC 的性能吗?

javascript - 使用 Reactjs 创建一个快速的天气小部件应用程序

javascript - 当文本输入更改时更新组件列表中子组件的状态

node.js - Cookie 中的 JWT 身份验证,具有无状态服务器且无服务器端渲染

C# split 函数不起作用

c# - 如何动态创建功能区选项卡?

c# - .NET 中应用程序域的常见用途和最佳实践?

c# - 如何在不删除数据库的情况下更新 C# 中对 SampleData Seed 所做的更改?

javascript - 如何从数据表中的行单击下载?

c# - OpenXML SpreadsheetDocument SaveAs() 给出文件使用错误