带有QueryString的URL未达到MVC控制器方法

时间:2018-09-12 14:08:03

标签: javascript asp.net-web-api query-string

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

[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,因此它直接进入另一个控制器方法-一个没有参数的方法。在第二种情况下无法捕获参数,这是我做错了什么?

2 个答案:

答案 0 :(得分:1)

您已包含一个斜线。此斜杠表示无参数操作开始。因此只需替换URL:

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

使用

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

答案 1 :(得分:0)

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

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