2
A
回答
1
我不知道你有多大的控制樹。這是我會做的。我沒有兌現最佳表現。
案例1.尋找.NET屬性
IEnumerable<Control> GetMarkedControls(ControlCollection controls)
{
foreach(Control c in controls)
{
var props = c.GetType().Properties();
if(props.Count(x => x.GetCustomAttributes(false).OfType<YourAttribute>().Count() > 0) > 0)
yield return c;
foreach (Control ic in GetMarkedControls(c.Controls))
yield return ic;
}
}
病例2尋找HTML屬性
IEnumerable<WebControl> GetMarkedControls(ControlCollection controls)
{
foreach(Control c in controls)
{
if(c is WebControl)
{
var wc = c as WebControl;
if (wc.Attributes.FirstOrDeafult(x => x.Name == "yourAttribute") != null)
yield return c;
}
foreach (Control ic in GetMarkedControls(c.Controls))
yield return ic;
}
}
現在你可以這樣調用它:var controlsWAttribute = GetMarkedControls(this.Controls);
從您的網頁或任何控制。這樣你就不必在頁面級調用它。
使用此方法,您可以遞歸地瀏覽頁面或控件中的整個控件樹。
1
你需要使用反射,你可以得到一個對象的所有屬性,使用反射 http://msdn.microsoft.com/en-us/library/system.reflection.aspx
0
是頁面上的每個控件都有它包含所有子控件的「控制」屬性。我已經編寫了遞歸函數來循環這些,但沒有任何手頭。讓我嘗試寫一個真正快速:
public Collection<Control> findControlsWithAttributes(Control startingControl)
{
Collection<Control> toReturn = new Collection<Control>();
foreach (Control curControl in startingControl.controls)
{
if (DO COMPARISON HERE WITH CURCONTROL) toReturn.add(curControl);
if (curControl.Count() > 0) findControlsWithAttributes(curControl, toReturn);
}
return toReturn;
}
private void findControlsWithAttributes(Control startingControl, Collection<Control> inputCollection)
{
foreach (Control curControl in startingControl.controls)
{
if (DO COMPARISON HERE WITH CURCONTROL) inputCollection.add(curControl);
if (curControl.Count() > 0) findControlsWithAttributes(Control startingControl, Collection<Control> inputCollection);
}
}
它是一個小會兒,因爲我已經做到了這一點,我不記得了我的頭頂,如果Collection.Count是一個方法或屬性,以便使確保首先檢查,但如果你傳遞頁面,那麼這將檢查頁面上每個服務器可見的控件,並返回包含與您的比較匹配的控件的集合。
最後,Control.Attributes將返回一個AttributeCollection,您應該可以隨後進行比較。
0
不知道什麼屬性你後,但如果類的屬性是你是什麼樣的面貌@ user751975其他明智的,你可以這樣做後...
page.Controls.Cast<System.Web.UI.WebControls.WebControl>().First().Attributes["class"]
相關問題
- 1. 寫屬性路徑找到一個控件的屬性
- 2. 找不到屬性的屬性
- 3. Asp.net控件的屬性集合屬性
- 4. 將控件屬性綁定到XAML中的對象屬性
- 5. 沒有找到JSF屬性
- 6. scipy.stats屬性沒有找到
- 7. 設置屬性「源」到「org.eclipse.jst.jee.server:JSFTut」沒有找到匹配的屬性
- 8. 屬性不是從屬性中找到文件中使用@Value
- 9. 將控制屬性綁定到用戶控件屬性
- 10. Eclipse中的AdMob沒有找到屬性
- 11. 無法在winforms控件中找到新的子分類屬性
- 12. 將控件的Enable屬性綁定到CheckBox的Checked屬性
- 13. 找不到屬性
- 14. 的PropertyChanged所有屬性:消息=找不到屬性
- 15. Web控件屬性
- 16. 將c#屬性綁定到SAME控件上的其他屬性
- 17. 將控件的ID屬性綁定到對象屬性
- 18. 將控件屬性綁定到窗口ViewModel類的屬性
- 19. 在Rails控制器中查找屬性
- 20. 如何將控件的屬性綁定到控件元素的屬性?
- 21. 如何將控件的屬性綁定到另一個控件的屬性?
- 22. AutoGenerateColumns屬性在GridView控件
- 23. 未在字段屬性中找到DataMember屬性
- 24. DisplayMemberPath不顯示屬性 - 在'ViewModel'中找不到屬性
- 25. WPF控件模板:在'Control'錯誤中未找到屬性'ContentStringFormat'
- 26. 在運行時PictureBox控件c中找不到圖像屬性#
- 27. 沒有在屬性中找到屬性「id」的資源標識符
- 28. 使用INotifyPropertyChanged將Winform控件屬性綁定到用戶控件上的屬性
- 29. 按名稱查找控件屬性
- 30. 自定義控件依賴屬性綁定到屬性