ActionLink 404 Ошибка

Сборка моего первого приложения ASP.NET MVC 3 и попытка реализовать возможность диссоциации заданного мороженого из меню. Каждое из них имеет связанный с ним целочисленный идентификатор, и на странице я отображаю эти сопоставления и даю по ним ссылку для удаления мороженого из меню.

У меня есть ActionLink, который выглядит следующим образом:

@Html.ActionLink("Remove", "RemoveMenuIceCreamMapping", "IceCream", new { iceCreamId=item.IceCreamId, menuId=item. MenuId}, null)

В моем контроллере IceCreamController есть Action, который выглядит следующим образом:

[HttpPost]
public PartialViewResult RemoveMenuIceCreamMapping(int iceCreamId, int menuId)
{
   ...
}

Немного поискал и поверил, что мне может понадобиться изменить маршруты в файле Global.asax.cs RegisterRoutes для работы с этими двумя параметрами. Поэтому я попробовал так:

public static void RegisterRoutes(RoutesCollection routes)
{
   routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

   // I added this route in an attempt to handle the two parameters:
   routes.MapRoute(
      "RemoveMenuIceCreamMapping", // Route name
      "IceCream/RemoveMenuIceCreamMapping/{iceCreamId}/{menuId}", // URLwith parameters
      new
      {
         controller = "IceCream",
         action = "RemoveMenuIceCreamMapping",
         iceCreamId = UrlParameter.Optional,
         menuId = UrlParameter.Optional
      } 
   );

   // this was there by default
   routes.MapRoute(
      "Default",
      "{controller}/{action}/{id}",
      new {controller = "Home", action = "Index", id = UrlParameter.Optional }
   };
}

Но это не работает - я получаю ошибку "Ресурс не может быть найден", 404. Запрошенный URL: /IceCream/RemoveMenuIceCreamMapping/1/10

1 - это Id мороженого, а 10 - это Id меню.

Я ожидал, что будет вызвано действие RemoveMenuIceCreamMapping, передающее эти два параметра, но, очевидно, я не делаю что-то прямо здесь и могу просто неправильно понять, как выполнить то, что я хочу, и пойти по неправильному пути. Любое руководство было бы очень ценным.


Обновление

Итак, ещё одно, что я узнал, после прочтения этого SO вопроса, моя ActionLink не запускает POST, поэтому удаление [HttpPost] из действия показалось мне правильным. И, на самом деле, как только я это сделал, маршрут был найден и действие выполнено.

5
задан Community 23 May 2017 в 10:28
поделиться