URL с QueryString не соответствует методу контроллера MVC - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть два метода в контроллере. Один принимает параметр, другой нет.

[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 голосов
/ 12 сентября 2018

Вы должны определить в отображениях URL что-то вроде ниже

routes.MapRoute(
    "myrouting",
    "mycontroller/myaction/",
    new { }
    );
0 голосов
/ 12 сентября 2018

Вы включили косую черту.Эта косая черта означает, что начинается действие без параметров. Поэтому просто замените URL:

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

на

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