Запретить ASP.NET WebAPI 2 обрабатывать параметр запроса пустой строки как нулевой - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть веб-сервис RESTful, созданный с использованием ASP.NET WebAPI 2.

У меня есть этот метод в контроллере:

[Route("{DocNum:int}")]
public object Patch(int DocNum, string str = null)
{
    if(str == null)
    {
        //do something when parameter has NOT been passed...
    }
    else
    {
        //do something when parameter has been passed...
    }
}

Если я не передаю strв методе имеет значение null.

Если я передаю str=abc, в методе используется значение "abc".

Если я передаю str= (пустая строка), оно равно нулюв методе.

То есть ASP.NET WebAPI 2 обрабатывает параметры запроса пустой строки как нулевые!

Кажется, что это так, но есть ли способ обработать пустую строкустрока как пустая строка ?

1 Ответ

0 голосов
/ 01 февраля 2019

В HTML нет такого понятия как нольВход имеет какое-либо значение или пустое значение.Нет даже способа определить, является ли значение строкой или числом, просто взглянув на параметр запроса.

Поведение формы HTML по умолчанию включает все поля при отправке.Таким образом, даже если ввод не имеет значения, он все равно будет включен как часть запроса.www.example.com/xxx?str= и www.example.com/xxx являются допустимыми синтаксисами для представления того, что в поле str не введено значение.

Однако вы можете включить в форму скрытое поле

<input name="IsEmptyString" type="hidden"/>

и использовать JavaScript для установки значения на основе любой логики, которую вы используете, чтобы определить, является ли она пустой или нулевой.

...