Перегрузка метода с маршрутизацией

Я хотел бы закодировать две функции с одинаковым именем и разными параметрами в контроллере, как показано ниже.

[Route("Home/index")]
public JsonResult index()
{
    return new JsonResult {Data = 'test1'};
}

[Route("Home/index/{id}")]
public JsonResult index(id)
{
    return new JsonResult {Data = 'test2'};
}

Но я получил следующую ошибку с этим.

Текущий запрос на действие "index" для контроллера типа "HomeController" неоднозначен между следующими методами действия: System.Web.Mvc.JsonResult index() для типа application.Controllers.HomeController System.Web.Mvc.JsonResult index(int) по типу приложения. Контроллеры. HomeController

2 ответа

Как насчет чего-то, как вы можете определить несколько маршрутов

[Route("index")]
[Route("index/{id}")]
public JsonResult index(int id = null)
{

    if(id.HasValue()){
      return new JsonResult {Data = 'test2'};
    }

    return new JsonResult {Data = 'test1'};
}

Я нашел решение для этого. Код работает, но он должен вставить следующий код в RouteConfig.cs.

routes.MapMvcAttributeRoutes();
Другие вопросы по тегам