2011-11-01 42 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