2013-05-07 2 views
2

ASP.NET 4.0 사용ASP.NET 중계기 - 선언하지 않고 작동하는 HiddenField

이상한 코드가 여기에 있지만 작동하지 않지만 그 이유는 알 수 없습니다!

<asp:Repeater runat="server" ID="uxMyRepeater" ClientIDMode="Predictable"> 
    <ItemTemplate> 
     <asp:Button runat="server" Text="Submit" /> 
     <asp:HiddenField runat="server" ID="uxIsVisibleHiddenField" Value="0" /> 
    </ItemTemplate> 
</asp:Repeater> 

그리고 백 엔드 : 그래서이 작품 어떤 이유로, 일반적으로 내가 기대

Protected Sub uxMyRepeater_ItemCommand(source As Object, e As RepeaterCommandEventArgs) Handles uxMyRepeater.ItemCommand 
    uxIsVisibleHiddenField.Value = "1" 
End Sub 

이 uxMyRepeater_ItemCommand에 uxIsVisibleHiddenField을 선언해야하는

그래서 나는 약간의 HTML과 같이이 좋아요 :

Dim uxIsVisibleHiddenField As HiddenField = DirectCast(e.Item.FindControl("uxIsVisibleHiddenField"), HiddenField) 

하지만이 특정 ca 그것은 선언문없이 작동합니다. 누구나 왜이 일을 할 수 있는지에 대해 밝힐 수 있습니까?

참고 : 이것은 실제 코드가 아니라 샘플 코드입니다. 'uxIsVisibleHiddenField'가 선언되지 않습니다

편집이 나에게 내가 기대했던 거라고 오류를 제공하기 위해 비주얼 스튜디오의 원인 제거, 각 RepeaterItem 주위에 UpdatePanel이 언급하는 것을 잊었다. 보호 수준으로 인해 액세스 할 수 없습니다.

+0

값이 실제로 업데이트됩니까? –

+0

디버거에서 확인하십시오. 문제가 무엇입니까? – Roar

+0

디버거에서 컨트롤을 가져오고 값을 설정합니다. – Darthtong

답변

0

많은 디버깅 후에 내가 말할 수있는 유일한 것은 Repeater ItemTemplate 내부에 UpdatePanel이있을 때 매우 이상한 DataBind 이벤트에 액세스 할 때 ItemTemplate 내부의 컨트롤을 선언 할 필요가 없다는 것입니다. UpdatePanel을 가져 오면 컴파일러 오류가 발생하므로 UpdatePanel이 Repeater와 컨트롤간에 자동 연결을 수행해야합니다.

의견을 보내 주셔서 감사합니다.

1

이것은 리피터 외부에있는 동일한 ID를 가진 컨트롤이있는 경우에만 발생할 수 있습니다. 리피터는 이름 지정 컨테이너이기 때문에 ID 충돌이 발생하지 않습니다.

+0

정확히 내가 생각한 바에는 같은 ID로 리피터 밖의 다른 컨트롤이 없습니다! – Darthtong

+0

웹 앱입니까, 웹 사이트입니까? 항상 디자인 파일의 나머지 컨트롤 일 수 있습니다. 문제를 재현 할 수없는 정확한 코드를 복제했습니다. – ScottE

+0

그것은 웹 사이트입니다. 솔루션을 청소하려고 시도했지만 여전히 작동합니다. – Darthtong

0

AlternatingItemTemplate이 있습니까? 그 특정 지역에서 선언 될 수 있으며 주목받지 못했습니다.

+0

아니, 제안 주셔서 감사합니다. – Darthtong

관련 문제