Четене на Axios Получаване на параметри в Asp.Net MVC контролер

Използвам axios get метод и предавам параметри към asp.net mvc контролера. Мога да чета индивидуални стойности. Но се опитвам да прочета всички стойности заедно като един обект. Нямам модел на изглед и се опитвам да чета параметрите като общ обект. Какъв ще бъде axios params тип данни, който да се използва в c# контролера като параметър? Създадох отделен метод за 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 като обект на двойки стойности на имена към контролера на c#. Справка: https://codereview.stackexchange.com/questions/91783/constructing-a-query-string-using-stringbuilder


person Kurkula    schedule 10.04.2019    source източник
comment
Axios изпраща ли параметрите като низове на заявки? Ако е така, трябва да можете да ги свържете към сложен тип, като използвате [FromUri]. Вижте повече тук docs.microsoft.com/en-us/aspnet/web-api/overview/   -  person jpgrassi    schedule 29.04.2019


Отговори (1)


Вероятно има по-добри начини да го направите, но един от начините е да използвате параметър 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);
            }
        }

Също така не трябва да използвате блокове try без блокове catch. Надявам се това да помогне

person Bruno Camba    schedule 04.05.2019