Использование ASP.NET 4.0ASP.NET Repeater - HiddenField работает без объявления
Немного странное здесь, мой код работает, но я не знаю почему!
Так что есть некоторые HTML, как так:
<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
Так почему это работает, как правило, я бы ожидать, чтобы иметь объявить uxIsVisibleHiddenField в uxMyRepeater_ItemCommand например:
Dim uxIsVisibleHiddenField As HiddenField = DirectCast(e.Item.FindControl("uxIsVisibleHiddenField"), HiddenField)
Но в этом конкретном случае se работает без декларативного заявления. Может ли кто-нибудь пролить свет на то, почему он это сделает?
Обратите внимание, что это пример кода, а не мой фактический код.
EDIT
забыл упомянуть есть UpdatePanel вокруг каждого RepeaterItem, убрав это приводит к Visual Studio, чтобы дать мне ошибку, что бы я бы ожидать: «uxIsVisibleHiddenField» не объявлен. Он может быть недоступен из-за его уровня защиты.
Действительно ли значение действительно обновляется? –
проверить это в debuger, в чем проблема? – Roar
В отладчике он получает контроль в порядке и устанавливает значение. – Darthtong