加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – ActionLink 404错误

发布时间:2020-12-16 07:03:52 所属栏目:asp.Net 来源:网络整理
导读:构建我的第一个ASP.NET MVC 3应用程序并尝试实现从菜单中取消给定冰淇淋的能力.每个都有一个与之关联的整数标识符,在页面上我显示这些映射并提供一个链接,以便从菜单中删除冰淇淋. 我有一个看起来像这样的ActionLink: @ Html.ActionLink(“Remove”,“Remov
构建我的第一个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按钮),以便浏览器发送的动词与您在控制器上接受的动词匹配.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读