2009-07-17 66 views
1

好吧,我们去..控件覆盖.net应用程序

我有一个控件,它在程序集中..我们称之为“ControlAssembly”。

在名称空间ControlAssembly.Controls下面有一些控件。

所以,我想在我的网站上使用这个,加入

<add tagPrefix="ARC" namespace="ControlAssembly.Controls" assembly="ControlAssembly" />  

线,按平常。

但是,我想重写Web应用程序中的其中一个控件。

我已经将实例的这个控件加载到所有页面。

但是,在这个应用程序中,我想添加一个语言功能,它将在OnPreRender方法中翻译文本值。

我是一个懒惰的懒人,我希望能够做一些像继承ControlAssembly.Controls.Control一样的新“Control”,并且能够有效地替换ARC的所有实例:在此Web应用程序中使用此控件进行控制。

例如控制:ControlAssembly.Controls.Control {OnPreRender {更新文本属性}}

刚刚写了这个,我想我可以使用渲染适配器(我想)来做到这一点,但我并不真的想要那些附带一个连接到我的网站的渲染适配器。

对此方法的任何建议? (我知道我可以只是我所有的控件重命名为TranslatedControl这将做的工作..但我很想听听其他想法。

回答

2

您应该能够添加TagMapping,以取代旧的控制与你的新的 - 不必回去,并编辑所有使用它的网页或编写任何其他代码。

这背后的想法是,你可以告诉(通过web.config)你的应用程序您已创建新控件,并且想要将旧控件的引用绑定到新控件。

<pages> 
    <tagMapping> 
     <add tagType="ControlAssembly.Controls.MyOldControl" 
      mappedTagType="MyProjectNamespace.MyNewControl" /> 
    </tagMapping> 
</pages> 
+0

哇,惊讶我没有听说过这个。 这太棒了,我还没有尝试过,但它确实看起来像我之后。 非常感谢! – tim 2009-07-18 16:23:01