如何在多个ASP.NET站点中集中UI?

时间:2009-06-18 21:04:22

标签: asp.net themes

我作为上一个雇主的JSP / Struts开发人员负责的项目之一是一个主题标记库(在每个WebSphere服务器上作为共享库提供),让公司中的任何Java Web开发人员都可以标准主题,如内部网,公共等,只需要很少的努力。主题包括页眉,页脚,导航和css& amp;当我们给他们选项时,他们甚至可以自定义一些东西,比如选择一个选定的标签。

此设置非常理想,因为我们可以对任何标准UI元素进行集中更改,并且所有网站都会使用主题自动将其拉入,而无需网站开发人员的任何努力。

随着我12月开始的新工作,我转而使用ASP.NET。我想在这里提出与主题应用程序类似的东西,因为我们正在运行一堆应该具有统一外观的不同网站。

实现这一目标的最佳方法是什么?我宁愿不必重新编译任何东西来更新主题以使其工作。

编辑:

虽然我希望得到一个更好的答案,但.NET神显然不赞成我想要完成的事情。以下是找到的三个选项:

  1. 将母版页编译为DLL并将其放入GAC: 这在简单的情况下有效,但作为一个黑客它太脆弱了。我无法让它与我们的网站一起正常工作。

  2. 在每个网络应用中为主页面创建一个虚拟目录:这实际上确实有效,尽管它不适合非常舒适的开发环境。但是,我们试图摆脱的一件事是必须在每个Web应用程序中创建虚拟目录。没有骰子。

  3. 创建一堆自定义控件,将它们编译成DLL,并将其放入GAC:这是我选择的答案。它是最不集中的选项,需要为每个站点的开发人员提供更多的工作,但它似乎是微软唯一的方式。

  4. 总之,我对.NET非常沮丧。在宏观方案中,母版页只是代码,我没有看到为什么它们不能轻易集中用于多个Web应用程序的任何原因。与JSP / Java相比,这似乎是一个重大损失。

1 个答案:

答案 0 :(得分:0)

您可以将一些UI放入自定义控件或服务器控件的形式(如果不在MVC中),然后将它们放在GAC中,从而分发它们。所有对该程序集中控件的引用都将从gac中的最新版本中提取。您也可以通过Machine.config执行操作,该控制在服务器级别而不是应用程序级别进行控制。