【发布时间】:2012-06-13 19:14:31
【问题描述】:
我使用 ASP.NET MVC3 框架创建了一个 Web 应用程序。在项目中,我使用 HomeController 和 Index 操作添加了名为 Administrator 的新区域。
它适用于
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(
"Default",
"{controller}/{action}/{id}",
new { controller = "Default", action = "Index", id = UrlParameter.Optional },
new[] { "SampleWebsite.Controllers" }
);
这是 AdministratorAreaRegistration.ascx
context.MapRoute(
"Administrator",
"Administrator/{controller}/{action}/{id}",
new { area = "Administrator", controller = "Dashboard", action = "Index", id = UrlParameter.Optional },
new[] { "SampleWebsite.Areas.Administrator.Controllers" }
);
编辑
如果我将 MapRoute 从 Global 移动到 AdministratorAreaRegistration,问题就解决了(我无法理解和解释它)context.MapRoute(
"Administrator",
"Administrator/{controller}/{action}/{id}",
new { area = "Administrator", controller = "Dashboard", action = "Index", id = UrlParameter.Optional },
new[] { "SampleWebsite.Areas.Administrator.Controllers" }
);context.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { area = "", controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
namespaces: new[] { "SampleWebsite.Controllers" }
);
现在,对localhost/Home/Index 的所有请求都将是未找到响应 404。只允许具有确切区域名称(管理员)的请求。
感谢您的帮助!
【问题讨论】:
-
我们可以查看您的路线定义吗? (MapRoute) 我想看看 Global.asax 的路线,也想看看 AreaRegistration 的路线。
-
添加了 MapRoute。我错过了什么吗?
标签: c# asp.net-mvc-3 asp.net-mvc-3-areas