C# Asp.NET MVC3-访问区域';s控制器在URL中没有区域

C# Asp.NET MVC3-访问区域';s控制器在URL中没有区域,c#,asp.net-mvc-3,asp.net-mvc-3-areas,C#,Asp.net Mvc 3,Asp.net Mvc 3 Areas,我使用ASP.NET MVC3框架创建了一个web应用程序。在项目中,我添加了名为Administrator的新区域,其中包含HomeController和索引操作 它与 http://localhost:2813/Administrator/Home/Index 但是当我尝试使用URL访问时 http://localhost:2813/Home/Index 我收到一条错误消息: “/”应用程序中出现服务器错误 未找到视图“索引”或其主视图,或者没有视图引擎支持搜索的>>>位置。搜索了以下地点:

我使用ASP.NET MVC3框架创建了一个web应用程序。在项目中,我添加了名为Administrator的新区域,其中包含HomeController和索引操作

它与
http://localhost:2813/Administrator/Home/Index

但是当我尝试使用URL访问时
http://localhost:2813/Home/Index

我收到一条错误消息:

“/”应用程序中出现服务器错误

未找到视图“索引”或其主视图,或者没有视图引擎支持搜索的>>>位置。搜索了以下地点: ~/Views/Home/Index.aspx ~/Views/Home/Index.ascx ~/Views/Shared/Index.aspx ~/Views/Shared/Index.ascx ~/Views/Home/Index.cshtml ~/Views/Home/Index.vbhtml ~/Views/Shared/Index.cshtml ~/Views/Shared/Index.vbhtml

描述:执行当前web>>>请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息,以及错误>在代码中的起源

我也在maproute中添加了名称空间,但它仍然不起作用。 有人知道吗?谢谢

更新问题:

这是Global.ascx中的MapRoute
routes.MapRoute(
“默认”,
“{controller}/{action}/{id}”,
新建{controller=“Default”,action=“Index”,id=UrlParameter.Optional},
新[]{“SampleWebsite.Controllers”}
);

这是AdministratorAreaRegistration.ascx
context.MapRoute(
“管理员”,
“管理员/{controller}/{action}/{id}”,
新建{area=“Administrator”,controller=“Dashboard”,action=“Index”,id=UrlParameter.Optional},
新建[]{“SampleWebsite.Areas.Administrator.Controllers”}
);

编辑
如果我将MapRoute从全局移动到管理员重新注册(我无法理解和解释其内容),问题已得到解决
context.MapRoute(
“管理员”,
“管理员/{controller}/{action}/{id}”,
新建{area=“Administrator”,controller=“Dashboard”,action=“Index”,id=UrlParameter.Optional},
新建[]{“SampleWebsite.Areas.Administrator.Controllers”}
);
context.MapRoute(
“默认值”,//路由名称
“{controller}/{action}/{id}”,//带参数的URL
新的{area=”“,controller=“Home”,action=“Index”,id=UrlParameter.Optional},//参数默认值
名称空间:新[]{“SampleWebsite.Controllers”}
);

现在,对
localhost/Home/Index
的所有请求都将是响应404未找到。仅允许具有确切区域名称(管理员)的请求


谢谢你的帮助

当您使用url
/Home/Index
时,您没有经过该区域。在您的路由中定义了一个带有
Administrator
前缀的区域,正是url中存在此前缀,路由引擎才能识别您在该区域内


有些地方有一个默认区域。

当您使用url
/Home/Index
时,您不会进入该区域。在您的路由中定义了一个带有
Administrator
前缀的区域,正是url中存在此前缀,路由引擎才能识别您在该区域内


有一些有缺省区域。

< P>如果您需要启动页内部区域,请在默认区域的HealEngReTror中考虑这一点(<代码> /控制器/ HealEngCurror,CS < /代码>):


如果您需要启动页内部区域,请在默认区域的HealEngReTror中考虑这一点(<代码> /控制器/ HealEngCurror,CS < /代码>):


感谢您添加路线。如果您想在url中没有指定区域的情况下使用管理区域,您可以尝试将Global.asax中的路由替换为:

routes.MapRoute( "Default", "{controller}/{action}/{id}", new { area = "Administrator", controller = "Home", action = "Index", id = UrlParameter.Optional }, new[] { "SampleWebsite.Areas.Administrator.Controllers" } );

感谢您添加路线。如果您想在url中没有指定区域的情况下使用管理区域,您可以尝试将Global.asax中的路由替换为:

routes.MapRoute( "Default", "{controller}/{action}/{id}", new { area = "Administrator", controller = "Home", action = "Index", id = UrlParameter.Optional }, new[] { "SampleWebsite.Areas.Administrator.Controllers" } );

我们可以看看你的路线定义吗?(MapRoute)我想查看Global.asax中的路线,但也要查看Area Registration please中的路线。已添加MapRoute。我错过什么了吗?我们能看看你的路线定义吗?(MapRoute)我想查看Global.asax中的路线,但也要查看Area Registration please中的路线。已添加MapRoute。我错过了什么吗?我刚刚读了你的推荐链接,认为这可能是解决我问题的方法。谢谢!我只有空闲时间来尝试这个解决方案。这是一项伟大的工作,但我认为离理想还很远。我的问题是,如果我尝试使用
localhost:2813/Home/Index
访问,它应该重定向到404 not found,而不是转到管理区域的HomeController。我刚刚阅读了您的推荐链接,认为这可能可以解决我的问题。谢谢!我只有空闲时间来尝试这个解决方案。这是一项伟大的工作,但我认为离理想还很远。我的问题是,如果我尝试使用
localhost:2813/Home/Index
访问,它应该重定向到404 not found,而不是转到管理区域的HomeController。感谢您的回复。如果我访问
http://localhost/Home/Index
,此路由将重定向到
http://localhost/Administrator/Home/Index
,对吗?但在这里,我想要
http://localhost/Home/Index
重定向到错误404:找不到页面。此控制器仅由管理员拥有。项目的默认控制器没有HomeController。不,不会有重定向。将调用来自管理区域的操作。如果您试图处理访问权限,这不是一个好方法。区域不适用于此。如果这是你想要的,试试看授权过滤器。谢谢回复。如果我访问
http://localhost/Home/Index
,此路由将重定向到
http://localhost/Administrator/Hom