我需要开发一个网站的整个部分(大约10个不同的页面)作为DotNetNuke模块 . 该网站将使用DNN作为CMS,编辑将管理大部分网站的HTML内容(我将开发的部分除外) .
我已经对DNN模块开发进行了相当广泛的研究(甚至观看了DNN公司的一些录制的网络研讨会) . 不幸的是,我在网上找到的大部分内容都是关于开发简单的,类似于widget的模块 . 此外,大多数使用逐步“如何使用visual studio来实现x”方法,而我试图了解DNN如何工作 . 所以我似乎必须为自己弄明白......
在这一点上,我已经对DNN有所了解了,我看到了几个不同的解决方案:
-
为我的自定义部分的每个页面创建一个模块 . 我不太喜欢这个想法,特别是因为我需要在多个页面之间共享代码 .
-
开发一个内部具有多个用户控件的单个模块(每个页面一个),并使用自定义模块设置让每个页面知道要显示的控件 .
-
开发一个可用作库的"bogus"模块,以及每个页面的附加模块 .
-
开发库模块,然后使用Razor主机模块和Razor脚本进行视图(我不需要/想要我的应用程序上的WebForms) .
所以我决定问你们的建议 . 哪种方式首选?也许以上都没有?我知道上面的所有四个选项应该给我我想要的结果,但我也不想太过违反“DNN方式”......
4 回答
我根本不推荐#1(多个模块)或#3(也是多个模块),虽然#2(确定视图的单个模块w /模块级别设置)绝对是DNN模块开发人员广泛使用的可靠选项,听起来你更喜欢#4(Razor)而不是#2,因为你喜欢开发风格 .
所以 - 我建议采用Razor方法,虽然看起来你理解这种方法很好,但我想详细说明后人:
构建一个库(程序集/ DLL)来封装所有可重用的业务逻辑
为每个使用该逻辑并在页面上呈现数据的页面构建Razor视图
在您需要的每个页面上删除Razor Host模块并将其指向正确的视图
这应该很好 .
我假设您正在寻找以“网站项目”风格开发软件 . 我建议你看一下“Web应用程序项目”的做事风格 .
如果你在库中有共享功能,可以随意构建一个程序集并将其放在bin文件夹中,从那里,它将被DNN选中,它将在http上下文中运行,这太棒了!
在一个项目中构建模块,并将不同的模块打包到DNN清单中 .
希望我不是在谈论你的理解 .
添加了另一个答案,它本身就是一个帖子 .
模块 - 这是我们所有人都非常松散地使用的术语 .
更明确的定义
Package = Zip文件(非模块)
Manifest = .DNN文件
清单允许您将模块(视图/编辑/设置组)用户控件定义为单个安装包 .
在DNN 3.0清单中,如果您仍然使用此格式,您会注意到基本的单个安装包的结构如下(简要)
因此,上面定义了安装包中的单个模块 .
In the context of a blog, you would have 2 modules
博客显示模块(显示选定的博客或整个批次)
边栏导航模块(帮助您快速显示您在任何时间段内编写的博客)
您可以做的是将清单中的博客显示模块打包在
<folder></folder>
的副本中,然后将侧边栏导航模块打包到<folder></folder>
结构的另一个副本中 .For example, this project has 7 modules; Side bar navigation, custom search module, blah blah blah
1安装包(这意味着1个Web App项目)
7个模块
一个放置在垃圾箱中的组件/
所有代码都是共享的,然后您可以继承其他库引用以进一步开发 .
他们有不同的观点,名字,友好名称,但都有一个共同点
<foldername>
The KEY is in the Packaging.
它看起来像这样!这就是foldername所在的地方 . 它定义了将模块安装到DesktopModules的位置 .
在DNN 5书籍中,网站项目开发方法仍在使用中当您参与核心模块的开发时,您会发现项目采用Web App Project开发风格,这样更好,因为您的所有代码隐藏都在一个程序集中,而不是作为Web上的源代码公开 .
你肯定是在正确的道路上 .