我刚刚开始关注 ASP.Net MVC,但在我们目前正在开发的网站上,我们使用 DotNetNuke,我实际上喜欢您可以创建新的“模块”并将它们插入您的网站的方式轻松(如果模块编码正确)。
使用 Asp.Net MVC 模式时你能做到这一点吗?您有一个同事创建一个新的 .dll,设计师可以将其插入网站而无需太多或任何代码隐藏交互?
我刚刚开始关注 ASP.Net MVC,但在我们目前正在开发的网站上,我们使用 DotNetNuke,我实际上喜欢您可以创建新的“模块”并将它们插入您的网站的方式轻松(如果模块编码正确)。
使用 Asp.Net MVC 模式时你能做到这一点吗?您有一个同事创建一个新的 .dll,设计师可以将其插入网站而无需太多或任何代码隐藏交互?
为什么不?
这与整个 .net 框架中使用的“提供者模式”非常相似。对于.net框架中的模块,它可以在不接触源代码的情况下动态加载不同的Provider,这一切都必须在xml配置文件中完成。
在实践中,您创建了一个 ModuleProvider 基类,所有模块都将从该基类继承。在主控制器中,它加载不同的 ModuleProviders 并让它们完成其余的工作。
这将是一个很长的段落来解释提供者模式和设计是怎样的。请阅读上面的链接并研究框架中使用的那些提供程序。
Andrew Nurse(DNN 的高级开发人员 Charles Nurse 的儿子)已经开始在 ASP.NET MVC 中创建一个类似于 DNN 的可插拔功能的基本框架,称为Maverick,您可能会对它感兴趣。
你会错过一些重要的东西。在 MVC 的单独 dll 中可以有可重用的代码,但是由于控件(又名模块)的使用是有限的,因此很难有一个有用的实现。Oldschool ASP.NET 对于这类应用程序来说要好得多。
活动
如果你有一个控件,你经常需要它来接收事件或发送事件。这只能在 ASP.NET 网络表单中实现。
特性
在控件的容器上,您通常必须设置公共属性。那也是 ASP.NET Webforms。
我有提到 ViewState 吗?我应该...
我不想让你远离 ASP.NET MVC。它是一个非常好的框架,但我在 DotNetNuke 之类的应用程序中看不到它。
查看此博客条目http://blogs.msdn.com/hammett/。
演示如何将 .aspx 和 .ascx 页面嵌入 DLL 中,只需将 DLL 拖放到主应用程序 bin 目录中即可添加功能。路由和导航。它使用 MEF,但您无需做一些工作就可以做到。