我使用 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。仅允许具有确切区域名称(管理员)的请求。
谢谢你的帮助!