没有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),它将打开一个视图(成功),或抱怨找不到一个(你所看到的)。
- 对应的控制器和视图文件夹名称具有相同的名称。
- 相应的控制器方法和视图页面应该具有相同的名称。
- 如果您的方法名称与视图名称不同,则
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,正在使用的应用程序池没有适当的访问应用程序(文件夹,等等。)。 重置我的应用程序池身份后,它工作正常。
- 右键单击您的控制器的
index()
方法 - 然后点击
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节点内)是“无”…不知道为什么,但这是我的原因得到相同的错误,只是编辑为“内容”作为其他人,它的工作。
希望有所帮助