Чтение Axios Получить параметры в контроллере Asp.Net MVC - PullRequest
4 голосов
/ 10 апреля 2019

Я использую метод get axios и передаю параметры в контроллер 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

1 Ответ

2 голосов
/ 04 мая 2019

Возможно, есть лучшие способы сделать это, но один из них - использовать параметр 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блоки.Я надеюсь, что это помогает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...