обход DOM из кода - PullRequest
       22

обход DOM из кода

0 голосов
/ 29 сентября 2011

У меня есть веб-страница asp.net с серией скрытых полей ввода, которые я использую для передачи значений от клиентской стороны до кодирования в момент отправки.

<input type="hidden" id="zorro1" value="somevalue set at runtime from client-side" />
<input type="hidden" id="zorro2" value="somevalue set at runtime from client-side" />
.../... 
<input type="hidden" id="zorron" value="somevalue set at runtime from client-side" />

Теперь мне нужноизвлечь эти значения из кода.Я могу написать эту уродливую вещь:

dim aValue as string = zorro1.value
dim aValue as string = zorro2.value
.../...
dim aValue as string = zorron.value

Это работает, но я хотел бы "найти контроль" каждого скрытого ввода, как это, с помощью LINQ, в псевдокоде:

dim inputControls = from c in page.controls where id.startswith("zorro") select s

for each ic in inputControls
    aValue = ic.value
    aId = ic.ID
next

Может кто-нибудь направить меня в правильном направлении?

1 Ответ

0 голосов
/ 30 сентября 2011

Нашел этот ответ где-то в сети, и он работает:

На самой HTML-странице вы можете добавлять объекты по своему усмотрению, например:

<input type="hidden" id="someMeaningfulID" runat="server" value="some Value" />

Из Javascript легко изменить значение таких объектов. В своем коде, добавьте эту подпрограмму:

    Private Sub AddControls(ByVal page As ControlCollection, ByVal controlList As ArrayList)
    For Each c As Control In page
        If c.ID IsNot Nothing Then
            controlList.Add(c)
        End If

        ' A pinch of recursivity never hurts :-)
        If c.HasControls() Then
            call AddControls(c.Controls, controlList)
        End If
    Next
End Sub

И когда вам это нужно:

Dim controlList As New ArrayList()
Call AddControls(Page.Controls, controlList)

For Each c In controlList
        If c.id.startswith("something I'm looking for") Then ...

        If c.value <> "" Then....

        If c.someProperty = someValue tThen...
.../...
...