Как направить, ПОЛУЧАЮТ и УДАЛЯЮТ запросы на тот же URL к различным методам контроллера

Вот мои маршруты в Global.asax

    routes.MapRoute("PizzaGet", "pizza/{pizzaKey}", new { controller = "Pizza", action = "GetPizzaById" });
    routes.MapRoute("DeletePizza", "pizza/{pizzaKey}", new { controller = "Pizza", action = "DeletePizza" });    

Вот мои методы контроллера

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult GetPizzaById(long pizzaKey)

[AcceptVerbs(HttpVerbs.Delete)]
public ActionResult DeletePizza(long pizzaKey)

Когда я делаю ПОЛУЧЕНИЕ, оно возвращает объект, но когда я делаю УДАЛЕНИЕ, я получаю 404. Кажется, что это должно работать, но это не делает.

Если я передвигаю два маршрута тогда, я могу сделать УДАЛЕНИЕ, но надеть 404 ПОЛУЧЕНИЕ.

Теперь это действительно красиво. Спасибо

routes.MapRoute("Pizza-GET","pizza/{pizzaKey}",
              new { controller = "Pizza", action = "GetPizza"},
              new { httpMethod = new HttpMethodConstraint(new string[]{"GET"})});

            routes.MapRoute("Pizza-UPDATE", "pizza/{pizzaKey}",
              new { controller = "Pizza", action = "UpdatePizza" },
              new { httpMethod = new HttpMethodConstraint(new string[] { "PUT" }) });

            routes.MapRoute("Pizza-DELETE", "pizza/{pizzaKey}",
              new { controller = "Pizza", action = "DeletePizza" },
              new { httpMethod = new HttpMethodConstraint(new string[] { "DELETE" }) });

            routes.MapRoute("Pizza-ADD", "pizza/",
              new { controller = "Pizza", action = "AddPizza" },
              new { httpMethod = new HttpMethodConstraint(new string[] { "POST" }) });
24
задан Arron S 27 January 2010 в 02:36
поделиться

2 ответа

У вас неправильный путь к файлу masonry.js.

вы используете js/jquery.masonry.js , когда это должно быть JS/jquery.masonry.js (capital JS)

, и у вас есть дополнительная запятая (,) в конце вариантов, которые вы передаете в кладку..

После того, как вы исправите эти ошибки в вашем примере, просто запустите код кладки снова, как Крио упомянул в своем ответе...

-121--4904086-

Двоеточия играют особую роль в URL-адресах - например, для обозначения порта и поэтому «зарезервированы» ( см. здесь ).

URL-адреса используют некоторые символы для специальных используется при определении синтаксиса. Когда эти символы не используются в своих специальная роль внутри URL, они должны для кодирования

Таким образом, двоеточие должно быть удалено.

-121--4407546-

Вы можете ограничить свои маршруты с помощью HTTP-команды так:

  string[] allowedMethods = { "GET", "POST" };
  var methodConstraints = new HttpMethodConstraint(allowedMethods);

  Route reportRoute = new Route("pizza/{pizzaKey}", new MvcRouteHandler());
  reportRoute.Constraints = new RouteValueDictionary { { "httpMethod", methodConstraints } };

    routes.Add(reportRoute);

Теперь вы можете иметь оба маршрута, и они будут ограничены с помощью глаголов.

19
ответ дан 28 November 2019 в 23:47
поделиться
[ActionName("Pizza"), HttpPost]
public ActionResult Pizza_Post(int theParameter) { }

[ActionName("Pizza"), HttpGet]
public ActionResult Pizza_Get(int theParameter) { }

[ActionName("Pizza"), HttpHut]
public ActionResult Pizza_Hut(int theParameter) { }
.
18
ответ дан 28 November 2019 в 23:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: