没有find'索引'或其主人的观点。

The view 'Index' or its master was not found. The following locations were searched: ~/Views/ControllerName/Index.aspx ~/Views/ControllerName/Index.ascx ~/Views/Shared/Index.aspx ~/Views/Shared/Index.ascx 

使用ASP.Net mvc区域时出现此错误。 区域控制器操作被调用,但它似乎在“基础”项目视图中而不是在区域视图文件夹中寻找视图。

你需要做的是设置一个令牌给你的地区名称:

例如:

 context.MapRoute( "SomeArea_default", "SomeArea/{controller}/{action}/{id}", new { controller = "SomeController", action = "Index", id = UrlParameter.Optional } ).DataTokens.Add("area", "YOURAREANAME"); 

由于您的Controller方法名称与View的名称不同,所以引发了此错误。

如果你右键点击你的控制器方法,然后select转到视图(Ctrl + M,Ctrl + G),它将打开一个视图(成功),或抱怨找不到一个(你所看到的)。

  1. 对应的控制器和视图文件夹名称具有相同的名称。
  2. 相应的控制器方法和视图页面应该具有相同的名称。
  3. 如果您的方法名称与视图名称不同,则return view("viewName")

Global.asax文件包含URL路由。 像这样的默认URL路由。

 "{controller}/{action}/{id}" 

所以,试试这个。

1.右键点击你的控制器方法如下。

例如:假设我们调用Index() 。右键单击它。 在这里输入图像说明

2.单击添加视图..并给出适当的名称。在这个例子中,名称应该是索引。

在这里输入图像说明

然后通过创build相关的文件夹结构来添加正确的视图。

检查在MyArea AreaRegistration.cs生成的代码,并确保控制器参数设置为您的默认控制器,否则控制器将被称为机器人由于某种原因ASP.NET MVC不会search区域文件夹的意见

 public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "SomeArea_default", "SomeArea/{controller}/{action}/{id}", new { controller = "SomeController", action = "Index", id = UrlParameter.Optional } ); } 

问题是我使用MvcContrib MvcRoute.MappUrl来路由context.Routes

看起来MvcContrib路由映射器对区域路由不舒服。

如果这个错误只发生在一个web服务器上,那么这个问题可能是因为视图没有正确部署。

如何将这种情况发生的例子是如果视图的构build操作被设置为None而不是Content。

检查视图是否正确部署的方法是导航到Web服务器上站点的物理path,并确认视图是否存在。

你很可能没有创build你自己的视图引擎。
默认的视图引擎在~/Views/[Controller]/~/Views/Shared/查找视图。

您需要创build自己的视图引擎,以确保在区域视图文件夹中search视图。

看看菲尔·哈克的这篇文章 。

它仍然是最终版本上的一个问题..当你从上下文菜单/添加/区域创build区域,Visual Studio不把控制器里面的MapRoute方法的最后一个参数。 你需要照顾它,在我的情况下,我必须手动把它每次创build一个新的区域。

我今天遇到了这个问题,一个简单的开箱VS 2013 MVC 5项目手动部署到我的Windows本地IIS的本地实例。事实certificate,正在使用的应用程序池没有适当的访问应用程序(文件夹,等等。)。 重置我的应用程序池身份后,它工作正常。

  1. 右键单击您的控制器的index()方法
  2. 然后点击goto view

如果这个动作打开index.cshtml?

您的问题是IIS池没有权限访问该视图的物理path。

你可以通过授予权限来testing它。 例如: – 转到c:\inetpub\wwwroot\yourweb然后右键单击yourweb文件夹 – >属性 – >安全,并添加组名每个人,并允许完全控制到您的网站。 希望这能解决你的问题。

即使您的区域注册中使用了所有正确的MapRoutes,也可能会出现此错误。 尝试添加此行到您的控制器操作:

 If Not ControllerContext.RouteData.DataTokens.ContainsKey("area") Then ControllerContext.RouteData.DataTokens.Add("area", "MyAreaName") End If 

如果即使在您的区域注册中使用了所有正确的MapRoutes,也可以得到此错误,并且所有其他基本configuration都可以。

这是情况:

我已经使用下面提到的Jquery文件中的代码来回发数据,然后从控制器的操作方法加载视图。

 $.post("/Customers/ReturnRetailOnlySales", {petKey: '<%: Model.PetKey %>'}); 

上面的jQuery代码我没有提到成功的callback函数 。 发生了什么事情后,完成一个后面的行动方法的情况下,没有路由到我的预期的观点,它回到了JQuery的一面,并给了视图没有发现错误如上。

然后, 我给了一个像下面的解决scheme,并没有任何问题的工作。

  $.post("/Customers/ReturnRetailOnlySales", {petKey: '<%: Model.PetKey %>'}, function (data) { var url = Sys.Url.route('PetDetail', { action: "ReturnRetailOnlySalesItems", controller: "Customers",petKey: '<%: Model.PetKey %>'}); window.location = url;}); 

注意:我把成功callback函数里面的请求发送到了我期望的视图操作方法。然后,视图引擎find了相关区域的视图文件并正确加载。

我也有这个问题; 我注意到,我错过了包含在名称与控制器相同的文件夹内的查看页面。

控制器:adminController View-> Admin-> view1.cshtml

(这是查看 – > view1.cshtml)(没有文件夹:pipe理员)

如果您的MSI安装程序无法真正部署文件,也会出现此错误。

在我的情况下,这是因为我将.aspx文件转换为.cshtml文件和Visual Studio认为这些是全新的文件,并将生成操作设置为none而不是内容。

我在这里得到了同样的问题,并猜测什么….看着csproj的xml'结构,我注意到内容节点(ItemGroup节点内)是“无”…不知道为什么,但这是我的原因得到相同的错误,只是编辑为“内容”作为其他人,它的工作。

希望有所帮助