1

我看过很多帖子(例如,请参阅https://stackoverflow.com/a/7363860/1378356),其中指出 ASP.NET 用户控件 (.ascx) 不打算用于不同的项目/程序集。相反,正确的方法是创建一个服务器/自定义控件。

我的问题是,创建 DNN 模块的目的是什么?DNN 模块通常有一个 .ascx 文件,该文件继承自 DotNetNuke.Entities.Modules.PortalModuleBase,后者最终继承自 System.Web.UI.UserControl。

这是创建 DNN 模块的正确方法吗?如果是,我会在此过程中经历痛苦吗?

4

2 回答 2

1

如果您遵循链接帖子中列出的“法律条文”,那是正确的。但是,在 DNN 模块的情况下,您创建的控件(您的 .ascx 文件)由您的代码使用并简单地与 DNN 一起加载。

鉴于您是这些或您的模块的消费者,所概述的部署或更改风险对 DNN 并没有真正的影响。

如果您要构建一个模块,然后允许其他人使用您的控件,那么事情会变得有些棘手,并且采用自定义控件的路线可能会使事情更容易使用。

(他们谈论的关于更新复杂性的一个很好的例子是 DNN TextEditor 控件。鉴于对“~/Controls/TextEditor.ascx”的根相对引用,您必须欺骗 VS 以了解正确的类型是什么控制。)

但总而言之,对于基于 DNN 的解决方案,是的,.ascx 是一种可接受的做法。

于 2015-12-10T17:25:02.733 回答
0

如果您从 Chris Hammond (Christoc.com) 创建的模块模板开始,您将几乎没有痛苦。

于 2015-12-10T11:40:41.480 回答