我想在Page_PreRender上運行一些代碼,但只希望它在某個DIV內的超鏈接上運行。Page_PreRender查找div的id(asp.net VB)
如果NavigateUrl =用戶所在頁面的URL,代碼所做的是更改超鏈接的顏色。
我有一些代碼可以工作,但它改變了頁面上每一個鏈接的顏色,當我只希望它發生在某個div內時,它就會匹配。
的DIV ID我想要的超鏈接的改變是 'subNav'
當前代碼
Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
Dim filePath As String = "/~" & System.Web.HttpContext.Current.Request.Path
Dim strControlType As String
For Each ctrl As Control In Me.Controls
For Each subctrl As Control In ctrl.Controls
strControlType = Convert.ToString(subctrl.[GetType]())
If strControlType = "System.Web.UI.WebControls.HyperLink" Then
If filePath = "/" & DirectCast(subctrl, HyperLink).NavigateUrl Then
'DirectCast(subctrl, HyperLink).CssClass = "active"
DirectCast(subctrl, HyperLink).Attributes.Add("style", "color:#993366")
'Label2.Text = "/" & DirectCast(subctrl, HyperLink).NavigateUrl
End If
End If
Next
Next
End Sub
CODE我試着
Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
Dim filePath As String = "/~" & System.Web.HttpContext.Current.Request.Path
Dim strControlType As String
Dim subNavDiv As HtmlControl = CType(FindControl("subNav"), HtmlControl)
For Each ctrl As Control In subNavDiv.Controls
For Each subctrl As Control In ctrl.Controls
strControlType = Convert.ToString(subctrl.[GetType]())
If strControlType = "System.Web.UI.WebControls.HyperLink" Then
If filePath = "/" & DirectCast(subctrl, HyperLink).NavigateUrl Then
'DirectCast(subctrl, HyperLink).CssClass = "active"
DirectCast(subctrl, HyperLink).Attributes.Add("style", "color:#993366")
'Label2.Text = "/" & DirectCast(subctrl, HyperLink).NavigateUrl
End If
End If
Next
Next
End Sub
不知道這是去的路上它或不,但它似乎並沒有工作。
感謝您的任何幫助。
J.
一般來說,該方法似乎是正確的。但是,當您聲明「它似乎沒有工作」時,您不會提供足夠的有關結果的信息。 您的意思是說它不會改變subNav中任何元素的顏色? 或者它也改變了subNav以外的元素? 或者它會給出語法錯誤? 另外,aspx頁面的示例可能很有用。 – Durden81
那麼第一批代碼的作品,但在每個超鏈接上,第二批代碼的問題似乎是,'SubNav'div中的超鏈接不會被迭代,只要我將其更改爲runat =「server」即可。 ..困惑! – JBoom