You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为Edit方法添加[HttpPost]后出现HTTP 404资源未找到问题

解决ASP.NET MVC中ActionLink导致的HTTP 404错误

这问题我踩过好几次坑,大概率是路由匹配、Action参数或者ActionLink的写法不对导致的,咱们一步步来排查解决:

1. 先确认Controller和Action的基础配置

首先得确保你的后台代码没问题:

  • 你的Controller类必须叫 MemberController(ASP.NET MVC强制要求Controller后缀,少了这个路由根本找不到)
  • 里面必须有一个EditMember的Action方法,而且要正确接收MemberID参数,注意参数名要和你传递的一致(C#大小写敏感),示例代码:
    public class MemberController : Controller
    {
        public ActionResult EditMember(int memberID)
        {
            // 这里写你的业务逻辑,比如根据ID获取会员信息
            return View();
        }
    }
    

2. 修正ActionLink的写法(最常见的问题!)

你现在的ActionLink代码少了关键的参数命名和Controller指定,导致生成的URL不符合路由规则。正确的写法应该用四参数重载:

@Html.ActionLink("Rediger", "EditMember", "Member", new { memberID = item.MemberID }, null)

解释下每个参数:

  • "Rediger":链接显示的文本
  • "EditMember":要调用的Action名称
  • "Member":对应的Controller名称(不用加Controller后缀)
  • new { memberID = item.MemberID }:路由参数,必须明确指定参数名,不然MVC不知道这个值对应Action的哪个参数
  • null:用来传递HTML属性(比如class、id),不需要的话就传null

3. 检查路由配置是否匹配

打开项目里的路由配置文件(传统MVC是RouteConfig.cs,ASP.NET Core是Program.cs/Startup.cs),确认路由模板能匹配你的请求:
比如传统MVC的默认路由:

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

如果你的Action参数是memberID而不是默认的id,有两种解决办法:

  • 把Action的参数名改成id,这样就能匹配默认路由
  • 给Action加[Route]特性,自定义路由:
    [Route("Member/EditMember/{memberID}")]
    public ActionResult EditMember(int memberID)
    {
        // ...
    }
    

4. 验证生成的HTML链接

右键页面查看源代码,看看这个ActionLink生成的<a>标签的href属性是什么。比如正确的应该是/Member/EditMember?memberID=123或者/Member/EditMember/123,如果生成的URL是/EditMember/123或者/?MemberID=123,那就能直接定位到是ActionLink没指定Controller或者参数没命名的问题。

按照上面的步骤排查,基本就能解决这个404问题了!

内容的提问来源于stack exchange,提问作者MOR_SNOW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:39:04