Сборка моего первого приложения 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]
из действия показалось мне правильным. И, на самом деле, как только я это сделал, маршрут был найден и действие выполнено.