【问题标题】:Asp.Net MVC5 Project Admin Area Route - Error Routing Controller ActionResultAsp.Net MVC5 项目管理区域路由 - 错误路由控制器 ActionResult
【发布时间】:2016-09-24 00:31:36
【问题描述】:

MVC5 项目我为管理面板创建了区域。 我遇到了问题。

网站正面上有ProductController和ListActionResult。

还有。

管理面板中有 ProductController 和 ListActionResult。

现在...

我要去管理面板 ProductController 和 ListActionResult。(www.xxxxxxxxx.com/Admin/Home/List)

但该项目在其首页上打开。 (www.xxxxxxxxx.com/Home/List)

我要打开的页面>> www.xxxxxxxxx.com/Admin/Home/List

但是这个打开页面>> www.xxxxxxxxx.com/Home/List

不会改变页面地址。

但它是控制器。

可能是什么问题。

以下是路线信息。

AdminAreaRegistration.cs;

    public class AdminAreaRegistration : AreaRegistration 
    { 
        public override string AreaName 
        { 
            get 
            { 
               return "Admin"; 
            } 
        } 

        public override void RegisterArea(AreaRegistrationContext context ) 
        { 
            context.MapRoute( 
               "Admin_default", 
               "Admin/{controller}/{action}/{id}", 
               new { action = "Index", controller = "Home", id = UrlParameter.Optional }, 
               new[] { "Projem.Web.Areas.Admin.Controllers" } 
             ; 
   } 

RouteConfig.cs;

    public class RouteConfig 
    { 
        public static void RegisterRoutes(RouteCollection routes ) 
        { 
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}" ); 
            routes.MapMvcAttributeRoutes( ); 
            routes.MapRoute( 
               name: "Default", 
               url: "{controller}/{action}/{id}", 
               defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
               namespaces: new[] { "Projem.Web.Controllers" } 
             ; 
        } 
    } 

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-5 routes


    【解决方案1】:

    像这样更改 RegisterArea 方法。

    public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
                "Admin_default",
                "Admin/{controller}/{action}/{id}",
                new { controller = "Home", action = "Index", area = "Admin", id = "" },
                new[] { "Projem.Web.Areas.Admin.Controllers" }
            );
        }
    

    【讨论】:

    • 我认为您没有在 global.asax 文件中注册您的区域。您可以在 Application_Start() 方法中的 global.asax 文件中注册区域。写在下面行 AreaRegistration.RegisterAllAreas();
    • “Projem.Web.Areas.Admin.Controllers”命名空间的区域对吗?
    • 对对!管理面板测试控制器书操作工作。没问题。 TestController 和 BookAction 不在网站的前面。只有面板。这就是它起作用的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    • 2014-11-19
    • 1970-01-01
    相关资源
    最近更新 更多