zoukankan      html  css  js  c++  java
  • .Net Core 3.1.2 区域路由配置【原创】

    昨天遇到一个项目问题,新建的.NET core矿建在新建区域的MVC页面里面,无法通过路由找到页面。然后在网络上查询很多资料,发现都是千古文章一大抄,而且都是错误的。

    后面又添加了3个专业技术群,同样,没有人知道这个问题,官网也找了,确实由于自己不熟悉,没找到有用的。后来网上找个个大神,大神帮我远程搞懂了这个东西。在此,

    特别感谢广州的jalan  QQ86167612。

    在这里特别区分一下.net core的不同版本的路由。

    .NET CORE 2.0版本Startup文件路由配置:

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

      上面的方式是为区域添加路由,下面的是默认路由。

    不过值得注意的是,.NET CORE 3.0以上版本已经不再支持这种路由配置方式了,而是通过终节点方式配置的。我的.net core 版本为3.1.2,亲测有效。Startup文件配置如下。

     大家注意到,有两种方式,不过,首先说第一种:在项目中指定任意域。name后面的名字可以任意取,exists的意思就是根据实际的域来区分路由,也就是如果这样配置,则只需要写一个,以后无论加多少域,都可以自动识别路由。

    endpoints.MapControllerRoute(
                    name: "myArea",
                    pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}"); 
    还有一种方式 就是通过指定特定的域。这种方式的缺点就是,每次新增域,都要新增这样一个注册。
    endpoints.MapAreaControllerRoute(
                    name: "areas", "BaseManage",
                    pattern: "{area:exists}/{controller=User}/{action=Index}/{id?}");
    

     具体的区分一定要看官方说明:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/controllers/areas?view=aspnetcore-3.1 

     然后,贴上我的项目结构

     控制器代码,这里的Area一定以及写上哈。里面填写你的区域名称

     StartUp配置代码上面以及发图了哈。之后发一个域的页面链接图。

     最后希望大家写博客的时候最好是自己亲自测试一下,不要到处抄写,结果全是错的。别人借鉴的时候云里雾里。

    再次感谢jalan,并希望这篇文章能对同样问题的你有帮助。

  • 相关阅读:
    开源测试工具 JMeter 介绍 物联网大并发测试实战 01
    使用测试客户端「玩转」MQTT 5.0
    写给PPT用,可测试性驱动开发导向IOC的过程
    .net并行库的一些记录
    windows上python和django开发环境的安装和配置
    MongoDB的Journaling的工作原理(每日一译)
    留给晚上分享用的python代码
    为什么我们需要可测试的面向对象开发(翻译 )
    使用谷歌统计来跟踪网页加载时间
    酷壳上的一道面试题
  • 原文地址:https://www.cnblogs.com/xiaobaicai12138/p/13049738.html
Copyright © 2011-2022 走看看