2011-11-01 43 views
1

基本上我想要一个ascx控件中的布尔属性,它可以在不加载完整控件的情况下读取(我想避免触发事件的LoadControl)。从路径获取属性或ascx文件的类型

我有数据库行存储不同的用户可以通过控件的虚拟路径看到不同的控件组。我需要添加打印这些控件的功能,但只有某些控件才能打印。

我正在考虑为那些支持它的控件提供一个接口,然后当我构建打印页面时,我检查每个控件的类型以查看它是否具有该接口。
沿着这些线我想知道是否有任何方式从文件的URL获取控件类型。我知道Page.LoadControl(url).GetType()会工作,但我想尽可能避免构建控件的开销。

原因: 由于打印具有ASCX文件存储的代码,在某些方面性能将是理想的开发过程中可能被添加到其他控件的能力。而不是需要更新每个数据库列表中的属性。

回答

2

通过在System.Web.Compilation名称空间中使用BuildManager类,可以获得UserControlType

Type ctrlType = BuildManager.GetCompiledType("~/PrintableControl.ascx"); 
bool isPrintable = typeof(IPrintable).IsAssignableFrom(ctrlType); 
+0

这似乎正是我想要的,非常感谢。虽然在我接受这个答案之前,你的代表是777,你有7个徽章,所以它显示“777 * 7” – Thymine