商城网站数据库表关系设计,免费生成ppt的网站,重庆市工程造价信息价查询,wordpress怎么做积分前言
软件系统中总是希望做到松耦合#xff0c;项目的组织形式也是一样#xff0c;本篇文章将介绍在ASP.NET CORE MVC中怎么样将Controller与主网站项目进行分离#xff0c;并且对Areas进行支持。 实践
1.新建项目
新建两个ASP.NET Core Web应用程序#xff0c;一个命名…前言
软件系统中总是希望做到松耦合项目的组织形式也是一样本篇文章将介绍在ASP.NET CORE MVC中怎么样将Controller与主网站项目进行分离并且对Areas进行支持。 实践
1.新建项目
新建两个ASP.NET Core Web应用程序一个命名为:WebHostDemo 另一个名为: Web.Controllers 看名字可以知道第一个项目是主程序项目第二个是存放Controller类和Areas的项目。
2.修改Mvc配置
在WebHostDemo项目中修改ConfigureServices函数
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程序集注入到主程序中了。当然还可以通过另一种方式
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函数以通过修改路由让Mvc支持Areas
app.UseMvc(routes
{routes.MapRoute(name: areaRoute,template: {area:exists}/{controllerHome}/{actionIndex}/{id?});routes.MapRoute(name: default,template: {controllerHome}/{actionIndex}/{id?});
});
3.添加Areas
在Web.Controllers项目中建立如下目录结构 Areas MyArea1-Controllers-Home.cs-Views-HomeIndex.cshtml
4.为Controller添加Area [Area(MyArea1)] public class HomeController : Controller{ public IActionResult Index() { return View();}
} 最后
还有一件事很重要当我们这么将项目进行分离后DEBUG主程序将没办法找到Areas和Views目录所以DEBUG时要将这些目录Copy到主程序代码根目录当然如果是发布程序的话就没有这个问题。
原文地址http://www.cnblogs.com/maxzhang1985/p/6683263.html.NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注