.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,並希望這篇文章能對同樣問題的你有幫助。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM