Проверка состояния пустой строки Asp.net Webapi в методе Get Action

Я создал webapi и отправил пустую строку в методе результата действий webapi. и нужно проверить проверку пустой строки внутри метода действия, но пустая строка преобразуется в приведенную ниже.

 [Route("{product}/{name}")]
            public IHttpActionResult GetName(string product,string Name)
            {
                var x = Name;

          if(!string.IsNullOrEmpty(x)){
          // do the logic 
          }

     else{

         }
            return Ok(true);
            }

почему он добавляет пустой формат, как показано ниже - формат "\"\""

URL-адрес webapi: http://localhost:60088/api/Name/GetName/Nokia/< /а>""

введите здесь описание изображения


person Mohamed Sahir    schedule 02.03.2018    source источник
comment
обратная косая черта используется для экранирования символа. Ваша двойная кавычка является специальным символом, и чтобы избежать ее, для каждого символа двойной кавычки он заменяется на \ и, следовательно, строка преобразуется в \\   -  person user869375    schedule 02.03.2018


Ответы (1)


Это потому, что то, что вы отправляете, не пусто, а состоит из двух кавычек ("") в вашем URL-адресе.

Двойная кавычка отображается как "\"\"" при поиске, потому что она хранится в виде строки, которая вводится (""), за которой следуют две экранированные кавычки (\") и затем закрывается еще одной простой кавычкой.

Подробнее об экранированных символах см. здесь.

Если вы хотите отправить фактическое пустое значение, вы просто полностью опускаете это значение.

Изменить:

Возможно, вы захотите найти "Ответ NightOwl888 по параметрам URL" и/или "Маршрутизация веб-API", чтобы ознакомиться с API-маршрутизация.

person Severin Jaeschke    schedule 02.03.2018
comment
Если вы оставите значение пустым, это будет не String.Empty (равно ), а null. Так что вы должны проверить это. - person Severin Jaeschke; 02.03.2018
comment
Я пробовал пустую строку и нулевую проверку здесь !string.IsNullOrEmpty(x), но она не соответствует и попадает в условие else. - person Mohamed Sahir; 02.03.2018
comment
По какому адресу вы звоните? - person Severin Jaeschke; 02.03.2018
comment
localhost:60088/api/Name/GetName необходимо для обработки этого сценария - person Mohamed Sahir; 02.03.2018
comment
И какое значение показывает при осмотре? Учитывая пример, который вы привели в своем вопросе, теперь у вас должна быть строка, содержащая две кавычки в продукте и ноль в имени. - person Severin Jaeschke; 02.03.2018
comment
когда я звоню по приведенной выше ссылке, длина строки составляет "\"\"" 2, и она не равна нулю. здесь это не соответствует приведенному выше условию и переходит в оператор else, в моем случае мне нужно \\ рассматривать как нулевую или пустую строку, что лучше подходит для этого. я могу пройти путь, когда проверка длины строки›2 означает, что она войдет в блок, но пустая строка я не хочу делать проверку длины или количества - person Mohamed Sahir; 02.03.2018
comment
Вот что я сказал: вы вводите информацию в свой параметр. Уберите кавычки из своего URL-адреса, тогда он работает, как я описал выше. Вы также можете проверить строку, содержащую двойные кавычки, но это спорно, если это хорошее поведение. Также вы можете посмотреть две ссылки, которые я добавил в пост, и прочитать о том, что вы пытаетесь сделать. - person Severin Jaeschke; 02.03.2018
comment
да, в моем клиентском требовании есть два варианта: один передает значение в параметре localhost:60088/api/Name/GetName/productNames - работает нормально и не работает - другой - localhost: 60088/api/Name/GetName/, а вторая логика терпит неудачу, потому что она не считается нулевой , ладно, спасибо, чувак, за ценный комментарий. Японял твою точку зрения. - person Mohamed Sahir; 02.03.2018