通过Web Api和ASP在数据库中搜索项目.净的核心

本文关键字:项目 搜索 核心 数据库 Api Web ASP 通过 | 更新日期: 2023-09-27 18:06:36

我想在ASP中传递一个查询参数给控制器。净的核心。下面是两个相关的方法:

[Produces("application/json")]
[Route("api/Heroes")]
public class HeroesController : Controller
{
    [HttpGet]
    [NoCache]
    public JsonResult Get()
    {
        return new JsonResult(_context.Heroes.ToArray());
    }
    [HttpGet("{searchTerm}", Name = "Search")]
    //GET: api/Heroes/?searchterm=
    public JsonResult Find(string searchTerm)
    {
        return new JsonResult(_context.Heroes.Where(h => hero.Name.Contains(searchTerm)).ToArray());
    }
}

当我输入url /api/heroes时,方法Get被调用。但是当我输入/api/heroes/?searchTerm=xxxxx时,就会调用相同的Get方法,就像URL中没有任何参数一样。

我错过了什么?

通过Web Api和ASP在数据库中搜索项目.净的核心

根据您的代码,您可以尝试这样做:

[Produces("application/json")]
[Route("api/Heroes")]
public class HeroesController : Controller
{
    [HttpGet]
    [NoCache]
    //GET: api/Heroes
    //GET: api/Heroes?searchTerm=
    public JsonResult Get(string searchTerm) //string is nullable, so it's good for optional parameters
    {
        if (searchTerm == null)
        {
        ...
        }
        else
        {
        ...
        }
    }
}

您不必在装饰器中放置查询字符串参数,因为它们会自动从方法参数映射。