使用 ASP.NET 4.0
这里有点奇怪,我的代码有效,但我不知道为什么!
所以我有一些像这样的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
因此,出于某种原因,这可行,通常我希望必须像这样在 uxMyRepeater_ItemCommand 中声明 uxIsVisibleHiddenField:
Dim uxIsVisibleHiddenField As HiddenField = DirectCast(e.Item.FindControl("uxIsVisibleHiddenField"), HiddenField)
但是在这种特殊情况下,它可以在没有声明性语句的情况下工作。任何人都可以阐明为什么会这样做吗?
请注意,这只是示例代码,不是我的实际代码。
编辑
忘了提到每个RepeaterItem 周围都有一个UpdatePanel,删除它会导致Visual Studio 给我一个我期望的错误:未声明'uxIsVisibleHiddenField'。由于其保护级别,它可能无法访问。