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

MVC项目中ActionLink触发HTTP 404错误求助

排查MVC中ActionLink导致的HTTP 404错误

兄弟,MVC里遇到404真的挺闹心的,我帮你梳理几个最常见的排查方向,一个个试应该能找到问题:

  • 先确认控制器和Action方法的基础存在性
    你提到已经创建了SiteRegistrationController,那一定要确保里面有public的CreateSite Action方法,而且默认是GET请求(如果没加[HttpPost]的话)。比如控制器里的代码得是这样的:

    public class SiteRegistrationController : Controller
    {
        SiteInfoManager manager = new SiteInfoManager();
    
        // 必须是public,且默认支持GET请求
        public ActionResult CreateSite()
        {
            // 你的逻辑代码
            return View();
        }
    }
    

    如果这个方法是private或者加了[HttpPost],那ActionLink发起的GET请求肯定会404。

  • 检查ActionLink的参数顺序是否正确
    你写的ActionLink代码是:

    <li> @Html.ActionLink("Create Location","CreateSite", "SiteRegistration", routeValues: null, htmlAttributes: new { id = "registerLink" }) </li>
    

    参数顺序是对的(链接文本→Action名→控制器名→路由参数→HTML属性),这里控制器名写SiteRegistration是对的,不需要加Controller后缀,这点没问题。不过可以右键查看页面源代码,看看生成的<a>标签的href属性是什么,比如是不是/SiteRegistration/CreateSite,然后手动在浏览器地址栏输入这个URL试试:

    • 如果手动输入也404,那问题出在后端路由或控制器上;
    • 如果手动输入能访问,那可能是页面渲染时的其他问题(比如JS干扰?不过概率很低)。
  • 排查路由配置是否正常
    打开RouteConfig.cs(如果是MVC 5及之前)或者Program.cs/Startup.cs(MVC Core),看看默认路由是否正确配置。比如MVC 5的默认路由应该是这样的:

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

    如果你的项目有自定义路由,或者给SiteRegistrationController配置了特殊路由规则,可能会导致CreateSite无法被匹配到。另外,如果项目使用了区域(Area),那ActionLink需要指定area路由参数,比如:

    @Html.ActionLink("Create Location","CreateSite", "SiteRegistration", new { area = "YourAreaName" }, new { id = "registerLink" })
    
  • 检查命名空间约束问题
    如果你的解决方案里有多个项目,或者控制器在特定的命名空间下,路由配置里可能加了命名空间约束,导致MVC找不到你的SiteRegistrationController。比如RouteConfig里的MapRoute如果指定了namespaces参数,要确保你的控制器所在的命名空间包含在里面。

  • 其他可能的小坑

    • 有没有给控制器加了[Route]属性进行属性路由?如果用了属性路由,那默认的约定路由可能不生效,需要确保CreateSite方法上的路由模板能匹配到请求;
    • 检查IIS或者开发服务器的配置,有没有把项目的根目录设置正确,导致URL路径前缀不对;
    • 清理项目的bin和obj文件夹,重新编译运行,有时候编译缓存也会导致奇怪的问题。

你可以按照上面的步骤一步步排查,应该能找到问题所在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:58:59