【问题标题】:asp.net parses wrong numeric values as 0asp.net 将错误的数值解析为 0
【发布时间】:2018-11-07 09:08:15
【问题描述】:

将错误或空值传递给数字参数时,它会被解析为 0。 例如如果你这样称呼 -> /api/getValue?id=abc

而id是一个int,id会有一个0值而不是抛出异常。

如果调用有一个空值,也会发生同样的情况 -> /api/getValue?id=

 

有什么方法可以让这个错误抛出异常,而不是将错误的值传递给方法?

顺便说一句,使用可为空的 int 会使您无法使用无参数重载,因此它不是解决方案。

【问题讨论】:

    标签: c# asp.net .net-core asp.net-core-2.0 asp.net-core-webapi


    【解决方案1】:

    试试这个:

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

    如果非数值作为参数传递,ModelState.IsValid 将为 false。如果你愿意,你可以在 if 语句中抛出一个异常。

    【讨论】:

    • 非常感谢!愚蠢的我,我在使用 MVC 时使用了 ModelState.IsValid 很多次,但我完全忘记了它。
    【解决方案2】:

    使用以下方法:

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

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多