2011-09-29 6 views
0

제출 시간에 클라이언트 측에서 코드 측으로 값을 전달하기 위해 일련의 숨겨진 입력 필드가있는 asp.net 웹 페이지가 있습니다.코드 숨김에서 DOM을 순회하기

<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와에 "의 FindControl"이 같은 각각의 숨겨진 입력을, 싶습니다

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 

사람이

넣을 수 내게 올바른 방향으로? 웹이 대답 곳을 찾을 수

답변

0

, 그것은 작동합니다

HTML 페이지 자체 내에서

, 당신처럼, 사용자의 편의에 개체를 추가 할 수 있습니다 :

자바 스크립트에서
<input type="hidden" id="someMeaningfulID" runat="server" value="some Value" /> 

그것 변경하기 그러한 객체의 값. 코드에서 뒤,이 하위 추가 :

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... 
.../... 
관련 문제