首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActionLink 404错误

ActionLink 404错误
EN

Stack Overflow用户
提问于 2011-08-22 15:05:57
回答 1查看 3.4K关注 0票数 5

构建我的第一个ASP.NET MVC 3应用程序,并尝试实现将给定的冰激凌与菜单分离的能力。每个都有一个与其相关的整数标识符,在一个页面上,我显示这些映射,并由它们提供一个链接来从菜单中删除冰激凌。

我有一个看起来像这样的ActionLink

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

在我的IceCreamController中,我有这样一个动作:

代码语言:javascript
复制
[HttpPost]
public PartialViewResult RemoveMenuIceCreamMapping(int iceCreamId, int menuId)
{
   ...
}

进行了一些搜索,并相信我可能需要修改Global.asax.cs文件的RegisterRoutes中的RegisterRoutes来处理这两个参数。所以我就这样做了:

代码语言:javascript
复制
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并没有触发一个帖子,因此将[HttpPost]从操作中删除似乎是正确的。事实上,当我这么做的时候,路线就被找到了,行动也就执行了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-22 15:19:10

我认为您的问题是,ActionLink使用HTTP,而您只接受HTTP。

您可能需要更改视图以发出HTTP (例如,在表单中有一个常规HTML按钮),以便浏览器发送的谓词与您在控制器上接受的内容匹配。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7149491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档