Найти элементы управления на главной странице sharepoint - PullRequest
0 голосов
/ 30 сентября 2008

Я пытаюсь перебрать все элементы управления на странице sharepoint, для целей тестирования я просто хочу вывести идентификатор элемента управления

это код, который я использую

Public Shared Sub SubstituteValues3 (ByVal CurrentPage As Page, ByRef s As StringBuilder)

    'Page()
    '- MasterPage
    '- HtmlForm
    '- ContentPlaceHolder
    '- The TextBoxes, etc.

    For Each ctlMaster As Control In CurrentPage.Controls


        If TypeOf ctlMaster Is MasterPage Then
            HttpContext.Current.Response.Output.Write("Master Page <br/>")

            For Each ctlForm As Control In ctlMaster.Controls

                If TypeOf ctlForm Is HtmlForm Then
                    HttpContext.Current.Response.Output.Write("HTML Form <br/>")

                    For Each ctlContent As Control In ctlForm.Controls
                        If TypeOf ctlContent Is ContentPlaceHolder Then
                            HttpContext.Current.Response.Output.Write("Content Placeholder <br/>")

                            For Each ctlChild As Control In ctlContent.Controls
                                HttpContext.Current.Response.Output.Write(ctlChild.ID.ToString & "<br />")
                            Next
                        End If
                    Next
                End If
            Next
        End If
    Next

    HttpContext.Current.Response.Output.Write("--------------")
    HttpContext.Current.Response.End()

однако это не проходит через вывод MasterPage.

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

Ответы [ 4 ]

1 голос
/ 02 октября 2008

Начните с Page.Master.Controls

Оттуда то, что у вас должно в основном работать

        For Each ctlForm As Control In Page.Master.Controls

            If TypeOf ctlForm Is HtmlForm Then
                HttpContext.Current.Response.Output.Write("HTML Form <br/>")

                For Each ctlContent As Control In ctlForm.Controls
                    If TypeOf ctlContent Is ContentPlaceHolder Then
                        HttpContext.Current.Response.Output.Write("Content Placeholder <br/>")

                        For Each ctlChild As Control In ctlContent.Controls
                            HttpContext.Current.Response.Output.Write(ctlChild.ID.ToString & "<br />")
                        Next
                    End If
                Next
            End If
        Next
0 голосов
/ 18 октября 2008

вы можете сделать это просто с помощью рекурсии, не эффективно, но это просто ... попробуйте этот метод: public void getControls (Управляющий ввод)

{
    foreach (Control c in input.Controls)
    {
        Response.Write(c.GetType().ToString() + " - " + c.ID + "<br />");
        getControls(c);
    }
}

И назовите это так:

getControls(Page);

Это будет циклически проходить через все элементы управления на вашей странице и выводить тип - ID из них и распечатывать его в верхней части страницы ... вы также можете использовать код для создания списка или все, что вы хотите сделать.

0 голосов
/ 02 октября 2008

Я нашел этот фрагмент кода, который, кажется, перечисляет элементы управления, которые мне нужны, хотя я думаю, что это скорее хак.

For i = 0 To CurrentPage.Request.Form.AllKeys.Length - 1
        If CurrentPage.Request.Form.GetKey(i).Contains("ctl00$PlaceHolderMain$") Then


            Dim key As String = CurrentPage.Request.Form.GetKey(i).Substring(22)
            Dim keyText As String = String.Format("[{0}]", key)

            HttpContext.Current.Response.Output.Write(keyText & "<br/>")

            'Text.Replace(keyText, CurrentPage.Request.Form("ctl00$PlaceHolderMain$" & key))
        End If
    Next
0 голосов
/ 01 октября 2008

MasterPage не является элементом управления текущей страницы, это свойство его, в Page.MasterPage

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...