程序化访问从基地到派生的控制?

时间:2010-11-15 16:19:38

标签: asp.net

在最近的一篇文章中,我表示需要使用声明性语法访问正文的属性,请参阅

Contentplaceholder for replacing attributes?

我认为第一个建议解决了我的问题。但是,语法混淆了编辑器,这是不可接受的。

我对可行解决方案的假设是对代码进行更改。从System.Web.UI.Page派生具有扩展功能的类。但是,我希望设计师能够仍然使用声明性语法来设置正文标记。

换句话说,

  1. 我不想更改我的aspx网页中的任何代码,除非它们来自基础

  2. 我希望能够使用声明性语法设置这些属性,只需在派生页面中添加标记

  3. 我不能立即确定如何做到这一点,因为它不完全符合OOP范例,我不确定需要在何处进行更改。

    初步假设,

    我可以在基础中使用findcontrol来查看是否添加了占位符。但是,不确定在页面处理生命周期的哪个位置我可以使用此findcontrol。我需要在呈现之前设置主体,但也能够从声明性代码中获取内容。

    我希望我想要完成的是明确的(?)基本上,我希望能够在我的aspx页面中编辑用户定义的标签,这将改变母版主体的类。

2 个答案:

答案 0 :(得分:1)

为什么不创建一个不呈现任何内容的自定义服务器控件(称为BodyAttributeManager),只是查看其属性并以编程方式将它们添加到body上的PreRender元素上?

答案 1 :(得分:1)

该示例中提到的嵌套标记不起作用。 ASP.NET不支持这一点。 @ jball的建议是个好主意;在身体外面有一个可以通过代码可编程地影响身体设置的类(这是唯一真正的解决方案)会给你你想要的东西。

HTH。