C# Asp.NET MVC3-访问区域';s控制器在URL中没有区域
我使用ASP.NET MVC3框架创建了一个web应用程序。在项目中,我添加了名为Administrator的新区域,其中包含HomeController和索引操作 它与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 我收到一条错误消息: “/”应用程序中出现服务器错误 未找到视图“索引”或其主视图,或者没有视图引擎支持搜索的>>>位置。搜索了以下地点:
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