• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

给定一个成员对象获取对当前类(ascx或aspx)的引用

asp.net 来源:Jamie Treworgy 11次浏览

给定某个文件(可以是usercontrol/ascx或aspx)的控件SomeControl的实例如何获取引用到它所属的班级?给定一个成员对象获取对当前类(ascx或aspx)的引用

在用户控件中,SomeControl.NamingContainer似乎是可靠的。

在从一个母版继承了一个页面,这将参考返回ContentPlaceHolder,而不是实际的类定义的aspx。我想在这种情况下是SomeControl.Page

Parent将在heirarchy返回父控制,所以没有太大的用处。

有没有什么方法可以直接得到这个,不管它是什么类型的东西?


===========解决方案如下:

您需要区分是否是类的成员,并且是页面上的可寻址控件。有一个区别 – 一个是面向对象编程语言的属性,另一个是添加到ASP.NET的WebForms实现中的构造。

将控件添加到default.aspx会将该控件添加到页面的Controls集合中。只要相关控件未包含在其他控件模板中(或者该模板被标记为InstanceTemplate,就像ContentPlaceholder一样),设计人员就会自动将该引用添加到页面类中。该引用基本上是一个围绕Page.FindControl的快捷方式。

通过实现INamingContainer接口,控件的NamingContainer是第一个负责确保其内部控件的唯一性的ParentControl。

这听起来像你想要做的是找到一个控制与关联的页面?为此,您需要遍历控件树(按照每个控件的.Parent属性),检查父类型是否为Page类型。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)