【发布时间】:2012-11-19 21:21:47
【问题描述】:
我正在努力做到这一点,以便我们为用户控件提供一个代码,但不同的站点(很可能是页面)将需要他们自己的 HTML 模板。 html 还需要前端开发人员可以在没有 dll 推送的情况下进行修改。
以前,我通过创建一个标准的 ascx 来实现这一点,其中包含绑定所有控件的代码。然后我让前端开发人员制作 ascx 的副本并更改新 ascx 的标记(使定义后面的代码与原始代码完全匹配)。然后有一个设置告诉控件使用哪个实际的 ascx,并且一切都正确连接。
但是,我想知道是否有更好的方法来实现这一点,特别是因为删除一个站点不需要的 asp 控件(如标签)这样简单的事情会导致异常)
在理想的世界中,我更喜欢类似于 MVC 或 MVP 类型的系统,但我被困在纯粹的、原始的 Web 表单系统中,我需要添加自定义控件。
有没有比创建多个 ascx 共享相同代码更好的方法来实现模板化?
请注意,模板的物理文件是必须的,以便我们可以在源代码管理中跟踪模板。
【问题讨论】:
-
主题的修改程度如何?我们是在谈论可以通过
OutlineColor或BackgroundUrl属性轻松实现的东西,还是对设计进行彻底改造? -
从一个站点到另一个站点,它们可能是完全不同的标记,从使用的类到控件上某些 html 节点的位置
-
使用skins怎么样? (可能不够通用?)
-
是的,这看起来不够通用。如果我们可以通过 CSS 控制一个编写良好的 HTML 标记,它可以在所有看起来是最佳选择的网站上工作,但我们需要更多的灵活性,包括更改日期显示格式的可能性(通过数据绑定完成日期属性并通过代码或在前端绑定转发器中显示在 ascx 中)
-
如何制作可以通过控件上的公共属性设置的 HTML 模板?那么控件会使用适当的模板吗?