昨天遇到一個項目問題,新建的.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,並希望這篇文章能對同樣問題的你有幫助。