asp.net анализирует неправильные числовые значения как 0 - PullRequest
0 голосов
/ 28 мая 2018

При передаче неверного или пустого значения в числовой параметр оно анализируется как 0. Например, если вы вызываете что-то вроде этого -> / api / getValue? Id = abc

, а id - это int, idбудет иметь значение 0 вместо выдачи исключения.

То же самое произойдет, если вызов имеет пустое значение -> / api / getValue? id =

Любойспособ заставить эту ошибку выдать исключение вместо того, чтобы передавать неправильное значение методу?

Кстати, использование обнуляемого int делает невозможным использование перегрузки без параметров, поэтому это не является решением.

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Попробуйте:

[HttpGet("{id}")]
public IActionResult Get(int id)
{
     if(!ModelState.IsValid)
     {
         return BadRequest();
     }
     return Ok();
}

Значение ModelState.IsValid будет ложным, если в качестве параметра передано нечисловое значение.Вы можете бросить Исключение внутри оператора if, если хотите.

0 голосов
/ 28 мая 2018

Используйте следующий метод:

int my_query;
if (!string.IsNullOrEmpty(Request.QueryString["id"]) && int.TryParse(Request.QueryString["id"], out my_query))
{
// do something!
}

Надеюсь, это поможет.

...