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

ASP.NET Core MVC Razor从_Layout页面跳转时出现404找不到页面错误

问题原因与解决方案

核心错误

ASP.NET Core MVC框架默认不会直接暴露Views目录下的.cshtml视图文件给外部直接访问,所有请求都要通过控制器+动作的路由规则匹配,你直接访问视图文件路径、写跳转指向.cshtml后缀的地址本身就不符合框架设计逻辑。

默认的MVC路由规则为 {控制器名}/{动作名}/{可选参数},默认控制器为Home、默认动作为Index,路由不会匹配你本地存储视图的文件夹路径。

具体修复步骤

  • 调整视图存放位置与命名
    你创建了CustomerSearchController,按照框架约定,该控制器下的动作对应的视图默认需要存放在Views/CustomerSearch/目录下,把你现在放在Views/Home/CustomerSearch/下的CustomerSearchView.cshtml移动到Views/CustomerSearch/目录,重命名为Index.cshtml,和你控制器里的Index动作对应。
  • 修改前端跳转逻辑
    把导航栏调用的JS函数修改为指向控制器动作的路由地址,不要写.cshtml后缀:
    function SearchClick() {
        window.location.href = "/CustomerSearch/Index";
        return false;
    }
    
    因为Index是默认动作,你也可以简化写为/CustomerSearch,效果完全一致。
  • 确认路由配置正常
    检查项目启动文件(.NET 6+为Program.cs,旧版本为Startup.cs)中是否存在默认路由配置,默认生成的项目都会自带如下配置,确保没有被你误删:
    // .NET 6+ 版本Program.cs中的配置
    app.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
    

可选适配方案

如果你不想修改现有视图的名称和存放位置,可以在控制器返回视图时显式指定视图的完整路径,不需要调整文件结构:

public IActionResult Index()
{
    return View("~/Views/Home/CustomerSearch/CustomerSearchView.cshtml");
}

该方案不需要修改视图文件,仅修改控制器代码即可正常访问。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:24:01