【问题标题】:Building Server Controls like ComponentOne or ComponentArt lirbaries构建像 ComponentOne 或 ComponentArt 库这样的服务器控件
【发布时间】:2010-12-10 22:55:22
【问题描述】:

我是一名专业的网络开发人员,了解所有著名的网络框架。

我想构建一个服务器控件集合,例如 ComponentArt 组件,您可以在项目中使用它们。

在 ComponentArt 中: 您可以轻松地在项目中注册 componentart 的命名空间并将数据绑定到这些控件,而无需任何额外的代码或工作(例如将任何额外的文件复制到我们的示例项目中),当然它们支持ajax。

为了实现这一点,我开始意识到我必须开发一些支持回调以处理 ajax 的高级用户控件,并且没有太多关于在不同项目之间共享用户控件的信息。其实这里是唯一有用的链接:http://www.codeproject.com/KB/user-controls/EmbeddedUserControl.aspx

另一方面,服务器控件没有 ascx 模板界面,我可以轻松地设计我的控件布局。

我需要一种方法来开发一些你可以做到的 Web 组件:

  1. 在其他项目中轻松共享(只需将 dll 添加到项目并开始 使用它)
  2. 支持 ajax 回调(例如 ICallbackEventHandler)
  3. 可以有一个 HTML 设计模板(比如有 ascx 模板的 UserControl 文件),因此您不必在代码中对 HTML 进行硬编码,例如:

    output.Write("<table>content</table>");

自定义服务器控件具有前两个,但它们没有 ascx 文件,因此您必须在 cs 文件中编写所有 html 代码

请指教...

【问题讨论】:

    标签: asp.net componentart


    【解决方案1】:

    您可以让服务器控件从一个文件中读取它,而不是硬编码您的 HTML,该文件的名称和路径由您根据配置设置或目录路径确定。这将使您的服务器控件更加动态,并且不需要在更改 HTML 时重新编译。这将有助于满足条件 #3,但对 #1 的成本较低(因为您的服务器控制现在依赖于外部资源,因此它不容易分发)。您始终可以硬编码默认标记并在未找到该文件时回退到它,以作为防止异常的额外预防措施。

    【讨论】:

    • 我虽然只能用LoadControl函数加载控件,它的参数是一个虚拟目录,只表示项目本地目录,没有别的,现在你可以用Server Control读取模板了吗?有示例代码吗?
    • LoadControl 用于用户控件。我要说的是,而不是 output.write("");你可以有 output.write(strVariableOfHtmlReadFromTextFile);其中文件路径是通过调用 ConfigurationSettings.AppSettings 确定的。
    • 我想就是这样 :D 现在我明白为什么人们如此讨厌 asp.net。
    【解决方案2】:

    要求 1 和 3 是互斥的。标记必须来自某个地方——编译的资源或外部文件。您的外部文件可能是可选的,但您必须在编译资源中指定默认标记。编译的资源不一定是您的 .cs 文件。您可以将它放在资源文件中,但我不确定这是否会更容易使用。您还可以将控件构建为现有服务器控件的组合,但这会使您的模板变得更加困难。

    【讨论】:

      【解决方案3】:

      您需要从以下书籍开始自学:

      使用这本书,并且花了很多时间,我创建了一个多列 TreeView。可以看HERE.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-18
        • 2012-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多