asp.net mvc5轻松实现插件式开发
2018-06-22 07:43:59来源:未知 阅读 ()
在研究Nopcommece项目代码的时候,发现Nop.Admin是作为独立项目开发的,但是部署的时候却是合在一起的,感觉挺好
这里把他这个部分单独抽离出来,
主要关键点:
- 确保你的项目是MVC5 而不是MVC4或者以前的版本
至少我用MVC4没成功,而且折腾了蛮久,
- 自定义ViewEngine
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace AutofacMvc5Test { public class MyPathProviderViewEngine:VirtualPathProviderViewEngine { public MyPathProviderViewEngine() { MasterLocationFormats = new[] { //Admin "~/WebAdmin/Views/{1}/{0}.cshtml", "~/WebAdmin/Views/Shared/{0}.cshtml", }; ViewLocationFormats = MasterLocationFormats; PartialViewLocationFormats = MasterLocationFormats; } protected override IView CreatePartialView(ControllerContext controllerContext, string partialPath) { IEnumerable<string> fileExtensions = base.FileExtensions; return new RazorView(controllerContext, partialPath, null, false, fileExtensions); //return new RazorView(controllerContext, partialPath, layoutPath, runViewStartPages, fileExtensions, base.ViewPageActivator); } protected override IView CreateView(ControllerContext controllerContext, string viewPath, string masterPath) { IEnumerable<string> fileExtensions = base.FileExtensions; return new RazorView(controllerContext, viewPath, masterPath, true, fileExtensions); } } }
- 设置编译输出目录
就是把作为插件的网站项目的Dll输出目录指定到主项目的Bin目录,这里采取的策略是设置相对目录,这里把WebAdmin当做插件项目,所以设置了他的输出目录到主项目的Bin目录
- 注册路由
这里新建了一个AdminAreaRegistration来专门负责WebAdmin相关路由的注册,好处是每个插件负责自己的事情,相互不影响,
但是这个RegisterArea什么时候执行呢,就是主网站项目调用 AreaRegistration.RegisterAllAreas();的时候,
那么AreaRegistration.RegisterAllAreas()主要干了什么?
ASP.NET MVC会遍历通过调用BuildManager的静态方法GetReferencedAssemblies得到的程序集列表,并从中找到所有AreaRegistration类型,
然后调用每个AreaRegistration类型的RegisterArea方法
注意 之所以说这是一个比较简单的方式,是因为 这个例子只是把插件项目的DLL简单的输出到主项目的Bin目录,
插件得DLL就已经可以被成功的添加到GetReferencedAssemblies列表里,
如果就想每个插件都有自己的目录那么可能需要你手动的通过BuildManager在APPStart前把每个插件DLL加入到GetReferencedAssemblies列表里,
代码下载: https://github.com/xlb378917466/SimplePlugin_asp.netmvc5.git
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- asp.net源程序编译为dll文件并调用的实现过程 2020-03-29
- Asp.net MVC SignalR来做实时Web聊天实例代码 2020-03-29
- ASP.NET MVC中jQuery与angularjs混合应用传参并绑定数据 2020-03-29
- Asp.Net中WebForm的生命周期 2020-03-29
- ASP.NET使用Ajax返回Json对象的方法 2020-03-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash