Используя MVC WebAPI, у меня есть 1 URL-адрес, который я хотел бы использовать как для GET, так и для POST.

Примере:

GET /person?personId=5
POST /person - the post would contain info about the new person to post, like { firstName: "Bob" }

Мой маршрут:

config.Routes.MapHttpRoute(
  name: "Person-GetAndPost",
  routeTemplate: "person",
  defaults: new { controller = "Person", action = "Get|Post" }
);

При посещении person?personId=5 в моем браузере я получаю сообщение об ошибке No action was found on the controller 'Device' that matches the name 'Get|Post'.

Вот действия в моем контроллере:

// with the action name called "Get", MVC Web API should match the verb GET with this action
public MyModels.Person Get(int personId)
{
    return; // return the person
}

// with the action name called "Post", MVC Web API should match the verb POST with this action
public MyModels.Person Post(MyModels.Person person)
{
    return; // return the updated person
}

Это вообще возможно? Спасибо.

0
Ian Davis 26 Сен 2013 в 21:36

1 ответ

Лучший ответ

Не устанавливайте действие:

config.Routes.MapHttpRoute(
  name: "Person-GetAndPost",
  routeTemplate: "person",
  defaults: new { controller = "Person" }
);
0
Pascalz 26 Сен 2013 в 21:42
Это сработало! Кроме того, я должен был убедиться, что в контроллере было только одно действие GET, иначе MVC Web API не знает, какое из них использовать. хорошо знать.
 – 
Ian Davis
26 Сен 2013 в 21:49