C# 同一控制器中不同路由的模糊UsactionException

C# 同一控制器中不同路由的模糊UsactionException,c#,asp.net-core,asp.net-core-mvc,C#,Asp.net Core,Asp.net Core Mvc,我有一个控制器变得模棱两可UsactionException。我有3种方法要执行 1.根据其Id获取成员 2.查找具有特定眼睛颜色的所有成员 3.召集所有成员 第一个很好,但我认为第2和第3个得到了含糊不清的UsactionException,因为它们都只使用HTTPGet,其他什么都没有。是否有一种方法可以区分带有查询参数的默认HTTPGet和HTTPGet。我使用查询参数作为eyecolor筛选条件,而不是成员的键 这是我的密码: namespace MyController.Control

我有一个控制器变得模棱两可UsactionException。我有3种方法要执行 1.根据其Id获取成员 2.查找具有特定眼睛颜色的所有成员 3.召集所有成员

第一个很好,但我认为第2和第3个得到了含糊不清的UsactionException,因为它们都只使用HTTPGet,其他什么都没有。是否有一种方法可以区分带有查询参数的默认HTTPGet和HTTPGet。我使用查询参数作为eyecolor筛选条件,而不是成员的键

这是我的密码:

namespace MyController.Controllers
{
    [Route("members")]
    public class MemberController: Controller
    {
        [HttpGet("{memberId}")]
        public IActionResult GetMemberFor(string memberId)
        {
            return Ok(DoSomeMethodWithId(memberId));
        }

        [HttpGet(Name = "FindMembersWith")]
        public IActionResult FindMembersFor([FromQuery(Name = "eyeColor")] string eyeColor)
        {
            return Ok(DoSomeOtherMethodWithFilter(eyeColor);
        } 

        [HttpGet(Name = "GetAllMembers")]
        public IActionResult GetAllMembers()
        {
            return Ok(DoMethodToRetrieveAllMembers);
        }
    }
}

urls:
www.mysite.com/members/{id} -- get single member by id
www.mysite.com/members  -- get all members
www.mysite.com/members?eyeColor=blue  --get all members with blue eyes

我可以添加一些东西使第二和第三条路线正常工作吗?

您可以添加自定义路线:

[Route("FindMembersWith")]
[HttpGet]
public IActionResult FindMembersFor([FromQuery(Name = "eyeColor")] string eyeColor)
{
   return Ok(DoSomeOtherMethodWithFilter(eyeColor);
} 

[Route("GetAllMembers")]
[HttpGet]
public IActionResult GetAllMembers()
{
    return Ok(DoMethodToRetrieveAllMembers);
}

我希望我的url看起来像:www.mysite.com/members和www.mysite.com/members?eyeColor=blue。这不可能吗?事实上我发现了一些有用的东西:虽然这会有用,但不是OP要求的。他们想让同一条路线处理两种不同的情况。当然,你可以简单地使用两条不同的路线。这不是真正的突破性信息。