【问题标题】:How To Setup a Controls Library for a DNN Site如何为 DNN 站点设置控件库
【发布时间】:2016-03-15 08:05:29
【问题描述】:

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

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

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

【问题讨论】:

    标签: user-controls dotnetnuke dotnetnuke-module webusercontrol asp.net-customcontrol


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 这些模板可能会起作用,但请您详细说明:DNN 是否真的打破了在另一个项目中没有 ascx 的标准,如果是,为什么?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多