Asp.net Mvc地区路由问题
我希望网站的默认页面是Login.cshtml。 我得到了例外:
错误:未找到视图“LogIn”或其主节点,或者没有视图引擎支持搜索的位置。 搜索了以下位置:
我有2个区域。 结构如下所示。
我的routeconfig如下所示。
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace Portal.Web { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "LogIn", id = UrlParameter.Optional }, namespaces: new[] { "Portal.Web.Areas.Management" } ); } } }
我的global.asax.cs如下所示:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Http; using System.Web.Mvc; using System.Web.Routing; namespace Portal.Web { // Note: For instructions on enabling IIS6 or IIS7 classic mode, // visit http://go.microsoft.com/?LinkId=9394801 public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); } } }
“你有什么建议吗?
你忘了一些东西
概括:
ManagementAreaRegistration.cs
public class ManagementAreaRegistration : AreaRegistration { public override string AreaName { get { return "Management"; } } public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Management_default", "Management/{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } }
RouteConfig.cs
public static void RegisterRoutes(RouteCollection routes) { routes.MapRoute( "Default" // Route name , "{controller}/{action}/{id}" // URL with parameters , new { area = "management", controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults , new[] { "Portal.Web.Areas.Management.Controllers" } // Namespace of controllers in root area ); }
你设置Portal.Web.Areas.Management
它应该是Portal.Web.Areas.Management.Controllers
它也缺少默认区域: area = "management"
看起来您需要在MapRoute
上更改名称空间:
Portal.Web.Areas.Management
至:
Portal.Web.Areas.Management.Controllers
清除bin文件夹并重建。 旧路由有可能设置旧的dll。 这对我来说至少适用于一条路线。
我按照这篇文章中的说明。 问题解决了。 访问ASP.NET MVC默认URL视图
谢谢你们。