日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

如何在多个项目中分离Asp.Net Core Mvc的Controller和Areas

發(fā)布時間:2023/12/4 asp.net 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何在多个项目中分离Asp.Net Core Mvc的Controller和Areas 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

軟件系統(tǒng)中總是希望做到松耦合,項目的組織形式也是一樣,本篇文章將介紹在ASP.NET CORE MVC中怎么樣將Controller與主網(wǎng)站項目進(jìn)行分離,并且對Areas進(jìn)行支持。


實踐

1.新建項目

新建兩個ASP.NET Core Web應(yīng)用程序,一個命名為:WebHostDemo 另一個名為: Web.Controllers ,看名字可以知道第一個項目是主程序項目,第二個是存放Controller類和Areas的項目。

2.修改Mvc配置

在WebHostDemo項目中修改ConfigureServices函數(shù):

public void ConfigureServices(IServiceCollection services){ ?
?// Add framework services.services.AddMvc(); ? ?var manager = new ApplicationPartManager(); ?
? ?var homeType = typeof(Web.Controllers.Areas.HomeController); ?
? ? ?var controllerAssembly = homeType.GetTypeInfo().Assembly;manager.ApplicationParts.Add(new AssemblyPart(controllerAssembly));manager.FeatureProviders.Add(new ControllerFeatureProvider()); ?
? ? ? ?var feature = new ControllerFeature();manager.PopulateFeature(feature);services.AddSingleton(feature.Controllers.Select(t => t.AsType()).ToArray()); }

這樣就將另一個項目中的Controller程序集注入到主程序中了。當(dāng)然還可以通過另一種方式:

public void ConfigureServices(IServiceCollection services){services.AddMvc().ConfigureApplicationPartManager( m => { ? ?
? ? var feature = new ControllerFeature();m.ApplicationParts.Add(new AssemblyPart(controllerAssembly));m.PopulateFeature(feature);services.AddSingleton(feature.Controllers.Select(t => t.AsType()).ToArray());}); }

這兩種方式都可以注入Controller。

接下來修改Configure函數(shù)以,通過修改路由讓Mvc支持Areas:

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

3.添加Areas

在Web.Controllers項目中建立如下目錄結(jié)構(gòu):
Areas

? ? ? ?MyArea1-Controllers-Home.cs-Views-HomeIndex.cshtml

4.為Controller添加Area

[Area("MyArea1")]
public class HomeController : Controller{ ?
?public IActionResult Index() ? ?{ ?
? ? ? ?return View();} }


最后

還有一件事很重要,當(dāng)我們這么將項目進(jìn)行分離后,DEBUG主程序?qū)]辦法找到Areas和Views目錄,所以DEBUG時,要將這些目錄Copy到主程序代碼根目錄,當(dāng)然如果是發(fā)布程序的話就沒有這個問題。

原文地址:http://www.cnblogs.com/maxzhang1985/p/6683263.html


.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注

總結(jié)

以上是生活随笔為你收集整理的如何在多个项目中分离Asp.Net Core Mvc的Controller和Areas的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。