每个控制在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