asp.net – ActionLink 404错误
构建我的第一个ASP.NET MVC 3应用程序并尝试实现从菜单中取消给定冰淇淋的能力.每个都有一个与之关联的整数标识符,在页面上我显示这些映射并提供一个链接,以便从菜单中删除冰淇淋.
我有一个看起来像这样的ActionLink: @ Html.ActionLink(“Remove”,“RemoveMenuIceCreamMapping”,“I??ceCream”,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是IceCream的Id,10是菜单的Id. 我期待发生的是将调用RemoveMenuIceCreamMapping动作,传递这两个参数,但我显然没有在这里做一些事情,可能只是误解了如何完成我想要的事情并以错误的方式去做.任何指导都将非常感激. 更新 所以,我读到的另一件事是,在阅读this SO question之后,我的ActionLink没有触发POST,因此从动作中删除[HttpPost]似乎是正确的做法.事实上,一旦我这样做,就找到了路线并执行了行动. 解决方法
我认为你的问题是ActionLink使用HTTP GET而你只接受HTTP POST.
您可能需要更改视图以发出HTTP POST(例如,在表单中使用常规HTML按钮),以便浏览器发送的动词与您在控制器上接受的动词匹配. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |