Почему следующие ошибки приводят к ошибке компиляции для строки B (Label2, вне UpdatePanel), но не для строки A (Label1, внутри UpdatePanel)? Я бы ожидал, что обе строки выдадут ошибку, поскольку оба элемента управления находятся в пределах одного и того же ретранслятора и поэтому не должны быть напрямую доступны за пределами ретранслятора, поскольку нет уникального экземпляра.Область управления внутри Repeater, с и без UpdatePanel
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = Label1.ClientID; // Line A - compiles fine
Label2.Text = Label2.ClientID; // Line B - "The name 'Label2' does not exist in the current context"
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:Repeater runat="server" ID="Repeater1">
<ItemTemplate>
<asp:UpdatePanel runat="server" ID="UpdatePanel1">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Label1" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:Label ID="Label2" runat="server" Text="Label2" />
</ItemTemplate>
</asp:Repeater>
</div>
</form>
</body>
</html>
Нет, исключений не существует. Я добавил код в Page_Load, который привязал ретранслятор к списку с двумя элементами, за которым следует строка A. В результате был изменен текст для Label2 во втором элементе ретранслятора. –