URL QueryString 未命中 MVC 控制器方法

URL with QueryString not hitting MVC Controller method

我在控制器中有两个方法。一个接受参数,另一个不接受。

[Produces("application/json")]
[Route("api/[controller]")]
public class ClientController : Controller
{
    [HttpGet("[action]/{id}")]
    public ObjectResult GetChildNodeObjects(string id)
    {
        //does stuff
    }

    [HttpGet("[action]")]
    public ObjectResult GetChildNodeObjects()
    {
        //does other stuff
    }
}

现在问题是第一个,接受参数的那个。 当我用 http://localhost:xxxx/api/project/GetChildNodeObjects/231a 击中它时,它会很好地获取参数。但是因为我得到了这样的 URL: http://localhost:xxxx/api/project/GetChildNodeObjects/?id=231a 它直接进入另一个控制器方法 - 没有参数的方法。第二种情况不捕获参数我做错了什么?

您添加了斜杠。这个斜杠意味着无参数动作开始。所以只需替换 URL:

http://localhost:xxxx/api/project/GetChildNodeObjects/?id=231a 

http://localhost:xxxx/api/project/GetChildNodeObjects?id=231a 

您应该在 url 映射中定义如下内容

routes.MapRoute(
    "myrouting",
    "mycontroller/myaction/",
    new { }
    );