выполнить итерацию по NavigateUrls в Page_PreRender и изменить стиль

#asp.net #vb.net

#asp.net #vb.net

Вопрос:

Я не уверен, возможно ли это вообще (может быть, есть другой способ достичь этого), но есть ли способ выполнить итерацию по всем гиперссылкам на Page_PreRender, и если NavigateUrl совпадает с именем файла, тогда я могу добавить класс к ссылке, чтобы показать это как активную страницу.

Или, что еще лучше, выполните итерацию по всем навигационным каталогам гиперссылок в определенном DIV.

Я могу сделать это индивидуально, но это займет слишком много времени, поскольку ссылок так много, и ими будет слишком сложно управлять:

    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

        If filePath = "/" amp; hMembership.NavigateUrl Then
            hMembership.CssClass = "active"
        End If

    End Sub
  

Ответ №1:

Вы можете сделать что-то подобное в Page_PreRender:

     Dim filePath As String = System.Web.HttpContext.Current.Request.Path

    For Each Control As Control In Me.Form.Controls
        If TypeOf (Control) Is HyperLink Then
            With TryCast(Control, HyperLink)
                If .NavigateUrl = filePath Then
                    .CssClass = "active"
                End If
            End With
        End If
    Next Control
  

Комментарии:

1. Спасибо, Левша, это вывело меня на правильный путь с несколькими изменениями / дополнениями.