【问题标题】:Can I set a default page per area in .net core?我可以在.net core 中为每个区域设置一个默认页面吗?
【发布时间】:2019-08-02 17:32:44
【问题描述】:

我需要 .net core 2.2 (MVC) 中每个区域的默认页面。这意味着如果有人键入例如“https://url/admin”(其中 admin 是区域),他会被路由到说“https://url/admin/user/index”。我想在每个领域都这样做。

在 app.UseMvc(routes =>... 中设置第二个默认页面给我一个错误。

【问题讨论】:

    标签: c# asp.net-core


    【解决方案1】:

    只需更改区域路由的默认控制器和操作,例如

    app.UseMvc(routes =>
            { 
                routes.MapRoute(
                   name: "areas",
                   template: "{area:exists}/{controller=User}/{action=Index}/{id?}"
                 );
    
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
    

    更新: 如果您想将不同的区域路由到不同的默认页面,您可以为这两个区域分别设置路由:

    app.UseMvc(routes =>
            {
                routes.MapAreaRoute(
                    name: "AdminRoute",
                    areaName: "Admin",
                    template: "Admin/{controller=News}/{action=Index}/{id?}");
                routes.MapAreaRoute(
                    name: "ManagementRoute",
                    areaName: "Management",
                    template: "Management/{controller=User}/{action=Detail}/{id?}");
    
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
    

    【讨论】:

    • 这不会将不同区域路由到默认值。我有以下内容:区域(管理,管理员),根索引。 Management 和 Admin 都有不同的控制器,但如果有人键入 url/Admin,我需要转到 Admin/News/Index,如果有人键入 url/Management,我需要转到 Management/User/Detail。
    • 我很尴尬。我在路线上有一个错字:详细信息。应该是细节......被代码蒙蔽了:s
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多