Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 找不到视图“索引”或其主视图_C#_Asp.net Mvc 4_Razor - Fatal编程技术网

C# 找不到视图“索引”或其主视图

C# 找不到视图“索引”或其主视图,c#,asp.net-mvc-4,razor,C#,Asp.net Mvc 4,Razor,我不熟悉C MVC项目类型,当我创建一个空的C MVC项目时,我注意到以下错误: The view 'Index' or its master was not found or no view engine supports the searched locations. The following locations were searched: ~/Views/ControllerName/Index.aspx ~/Views/ControllerName/Index.ascx ~/View

我不熟悉C MVC项目类型,当我创建一个空的C MVC项目时,我注意到以下错误:

The view 'Index' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/ControllerName/Index.aspx
~/Views/ControllerName/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx
~/Views/ControllerName/Index.cshtml
~/Views/ControllerName/Index.vbhtml
~/Views/Shared/Index.cshtml
~/Views/Shared/Index.vbhtml
我在Views文件夹下有Index.cshtml文件。为什么MVC引擎不直接查看Views文件夹?我如何解决这个问题

我的RouteConfig.cs内容包括:

 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

MVC在views文件夹下查找像Index这样的视图,但它们也必须位于以其控制器命名的文件夹下,只有少数例外情况,如partials

因此,这就是您希望在项目中遵循的结构

Controllers (folder)
    HomeController (.cs)
    AccountController (.cs)

Views (folder)
    Home (folder)
        Index (.cshtml)
    Account (folder)
        Index (.cshtml)

MVC引擎将在“共享”或类似控制器类前缀的文件夹下搜索视图。因此,如果您有ABCController,则需要将Index.cshtml视图放在文件夹Views/ABC下


PS:在您的示例中,您的控制器名称ControllerName有一个后缀,我认为这不是一个好的做法,始终为控制器命名[name]controller

当返回视图时,如果没有区域正在使用,它希望相关的.cshtml文件与该区域的控制器布局位于相同的视图文件夹结构中,然后只有一个视图文件夹和一个控制器文件夹。控制器名称将是视图文件夹中的文件夹名称,actionresult名称将是.cshtml文件的预期名称


幸运的是,有一种简单的方法可以修复视图文件丢失的情况。右键单击操作结果的索引,然后选择添加视图。单击OK,它将在正确的文件夹中为您创建Index.cshtml。现在,当您运行项目并导航到索引时,您将看到。

如果您手动将代码部署到IIS实例,请确保IIS中用于该应用程序的应用程序池标识对应用程序中的文件夹具有权限


诊断代码是否有问题或IIS设置是否有问题的一个好方法是在VS 201X调试器中运行它。如果它在那里运行,但不会直接在IIS下运行,则很有可能应用程序池身份安全性被提升。

您的生成中可能有旧的/坏的ASP.Net程序集

如果确保控制器、命名空间和视图名称都在正确的位置,那么MVC/ASP程序集很可能在当前Mono环境中工作时遇到问题

如果您尝试了复制所有可以找到的.Net程序集并将它们标记到您的bin中的技巧,那么Mono或其配置很有可能无法正确融合-您不需要再这样做了。 我在将机器更新为最新的Mono版本时遇到了这个问题。我从我的垃圾箱中删除了这些程序集,并在Mono MVC Packages文件夹中删除了最新的程序集

您将看到的第一件事是:

Microsoft.AspNet.Mvc Microsoft.AspNet.net基础架构 Microsoft.AspNet.webpage Microsoft.AspNet.Razor
这将解决这些问题。

我以前遇到过几次这个问题,它可能是其他任何答案,但也可能是生成操作导致了问题


如果右键单击遇到问题的.cshtml/.vbhtml文件,选择“属性”,然后在“属性”窗口中将“生成”操作设置为“内容”,则这可以解决问题。

我有一个虚拟目录没有正确引用实际目录。 在Windows上,我通过进入IIS Internet信息服务管理器,右键单击案例中未正确引用的虚拟目录“视图”来修复此问题。 虚拟目录旁边会有一个小图标:

右键单击,然后选择管理虚拟目录>高级设置。确保物理路径与您认为的路径匹配:


这并不适用于所有情况,但在某些情况下可能会匹配。

我知道这是一篇老文章,但我在Ubuuntu 16.04和Mono 4.2.1上遇到了同样的情况,所有这些都没有帮助。我开始钻研其他东西,一周后我发现,出于某种原因,Microsoft.Web.WebPages.OAuth.dll导致了这个错误。删除该dll并删除所有引用后,我不再使用OpenAuth,即使使用MySQL的简单成员身份,一切都立即开始工作。所以我想在这里发布这篇文章,以防其他人在Mono和Linux上遇到同样的情况,因为这是在google上出现的。

一个有用的诊断步骤是右键单击控制器的操作,选择“转到视图”

如果VisualStudio可以找到该视图,那么它可能位于正确的文件夹中,因此请重新检查您的URL。例如,如果使用区域,则区域名称应位于URL中:

/Area/Controller/Action

确保该文件存在于磁盘上,并且不信任Visual Studio的文件映射。如果您使用源代码管理和其他方法提交csproj而不是cshtml,可能会发生这种情况。这就是我遇到的问题,谢谢。我更新 d应用程序池标识以使用与我的网站相同的用户,现在它可以工作了。
/Area/Controller/Action