每個控制在Page.Header.ControlsASP.NET如何做For循環與控制
我怎麼可以這樣做如上,此刻得到錯誤 「控制是一個類型,不能使用爲表達」
的完整代碼如下
Try
' I only do this on my production servers, so I declare those here.'
If Request.ServerVariables("server_name") = "www.myproductionurl.com" Then
' Allow scripts and css to logged in CMS users'
Dim checkLogin As New Controls.Login
If checkLogin.IsLoggedIn <> True Then
For Each Control In Page.Header.Controls
If Control.GetType.Name = "EktronJsControl" Or Control.GetType.Name = "EktronCssControl" Or Control.GetType.Name = "EktronModalCss" Then
Page.Header.Controls.Remove(Control)
Else
' Removes the extra bubble inline style stuff that wasn't put in a CSS.''
Dim litControl As LiteralControl = Control
If litControl.Text = Nothing Then
litControl.Text = ""
End If
' Removing blank.css file'
Dim htmlLink As HtmlLink = Control
If htmlLink.Href = "/css/blank.css" Then
Page.Header.Controls.Remove(Control)
End If
End If
Next
End If
End If
Catch ex As Exception
End Try`
試過,但得到以下錯誤收集被修改;枚舉操作可能不會執行。 描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。 異常詳細信息:System.InvalidOperationException:集合已被修改;枚舉操作可能不會執行。 源錯誤:230 行:結束如果 行231:結束如果 行232:下一步 233線:結束如果 行234: – StevieB 2011-03-09 15:27:49
@StevieB - 那是因爲你正試圖刪除從'頭中的控制。控制「,同時仍然遍歷它們。您無法刪除'For Each'循環中的控件 – 2011-03-09 15:30:20
@StevieB - 您可以保留對要刪除的控件的引用(例如在另一個列表中),然後在「For Each」循環後全部刪除它們。或者你可以使用一個普通的'For'循環向後('我爲Integer = Page.Header.Controls.Length -1到0步-1'),並在那裏刪除它們。 – 2011-03-09 15:33:28