无法找到视图'Index',尽管索引已存在 - ASP.NET Core 6 MVC

4
我正在尝试在本地主机上运行我的asp.net应用程序,但似乎出现了以下错误:
未处理的异常发生在处理请求时。
InvalidOperationException: 未找到视图“Index”。已搜索以下位置: /Views/Web/Index.cshtml /Views/Shared/Index.cshtml /Pages/Shared/Index.cshtml
我将视图放在“Views > Web > Index.cshtml”中,但仍未找到解决此问题的方法。我已经阅读了asp.net文档和其他stackoverflow帖子,但似乎无法解决此问题。
使用: - Visual Studio 2019 - ASP.NET Core 6 - Windows 10
这是我program.cs文件中的代码:
    using UploadExcel.Context;
    using UploadExcel.Service;
    
    var builder = WebApplication.CreateBuilder(args);
    
    // Add services to the container.
    builder.Services.AddRazorPages();
    builder.Services.AddDbContext<DatabaseContext>();
    builder.Services.AddScoped<IWebService, WebService>();
    
    var app = builder.Build();
    
    // Configure the HTTP request pipeline.
    
    if (!app.Environment.IsDevelopment())
    {
        app.UseExceptionHandler("/Error");
        app.UseHsts();
    }
    
    app.UseHttpsRedirection();
    app.UseStaticFiles();
    
    app.UseRouting();
    
    app.UseAuthorization();
    
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Web}/{action=Index}/{id?}");
    });
    
    app.MapRazorPages();
    
    app.Run();

我也遇到过这个问题,原因是我没有正确地将索引放入 Web 文件中,而是只放在了 Views 文件夹下的 Web 文件夹里面,导致我认为我已经把它放进 Web 文件夹了。如果提供的代码能够正确地将索引放入 Web 文件夹中,就不会出现任何错误。因此,我有两点建议。第一,检查索引的位置,看看它是否出现在 Web 文件夹下拉并展开时,第二,检查与索引方法相对应的页面名称是否为 Index。 - Qing Guo
6个回答

10

如果你在使用Visual Studio 2022, ASP.Net Core MVC (.NET 6)时遇到了这个问题,一个即时的解决方法是打开一个终端,进入你的*.csproj文件所在的目录, 然后执行以下命令:

dotnet watch run

如果你确实想要使用Visual Studio,那么必须将Visual Studio 2022更新到版本17.1.0+(你当前的版本可能是17.0.4或其他版本)。 请参考这个链接这个链接


1
升级 VS 对我来说起到了作用,谢谢。 - aca
显然在17.1.2版本中又出现了问题。我升级到了17.2.1版本,它正常工作了。 - Cobus Kruger
升级到17.7对我来说起作用了。谢谢! - undefined

9

问题的原因之一可能是cshtml文件的生成操作。

  • 转到出现此问题的cshtml文件。
  • 右键单击它并更改属性[或点击Alt + Enter]
  • 将名为生成操作的属性从无更改为 内容

如下图所示:

选择None

打开DDL

选择内容


仍然在使用VS 17.4.0时遇到了这个问题。对我而言,这个解决方案是有效的。但是,这只会发生在一些部分视图上。我有很多其他视图没有必要这样做,它们可以正常工作。谁知道呢? - Kevin Dark

2
从NuGet包管理器安装Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation。
在program.cs中添加以下行。
  1. builder.Services.AddMvc().AddRazorRuntimeCompilation();
  2. builder.Services.AddControllersWithViews();
  3. app.MapControllers();

0

由于您正在使用控制器,因此您需要添加

builder.Services.AddControllersWithViews();

0
对我来说,我需要安装正确的SDK。
我运行了下面的命令。
dotnet --list-sdks

意识到我没有安装6.0.413版本的sdk,安装了那个特定的sdk,再次运行dotnet --list-sdks以确保我有那个版本。
然后我在根目录中添加了一个global.json文件来更改sdk版本。
我的构建正常工作了。我只是通过构建日志中的警告错误发现的。一旦我添加了global.json文件,就不再出现视图Index错误。

-6

可能您的应用程序正在VS2019上打开,请在VS2022中打开项目,问题将得到解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接