繁体   English   中英

阅读Axios获取Asp.Net MVC控制器中的参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM