ASP.NET WebAPI 2:如何在URI中将空字符串作为参数传递

时间:2016-01-06 10:02:16

标签: c# asp.net asp.net-web-api null query-string

我的ProductsController

中有这样的功能
public IHttpActionResult GetProduct(string id)
{
    var product = products.FirstOrDefault((p) => p.Id == id);
    return Ok(product);
}

当我使用此网址发送GET请求时:

 api/products?id=

它将id视为null。如何将其视为空字符串?

2 个答案:

答案 0 :(得分:7)

public IHttpActionResult GetProduct(string id = "")
{
    var product = products.FirstOrDefault((p) => p.Id == id);
    return Ok(product);
}

或者这个:

public IHttpActionResult GetProduct(string id)
{
    var product = products.FirstOrDefault((p) => p.Id == id ?? "");
    return Ok(product);
}

答案 1 :(得分:2)

我遇到一种情况,我需要区分没有传递参数(在这种情况下,将默认值分配为null)和显式传递空字符串。我使用了以下解决方案(.Net Core 2.2):

[HttpGet()]
public string GetMethod(string code = null) {
   if (Request.Query.ContainsKey(nameof(code)) && code == null)
      code = string.Empty;

   // ....
}