ClientIDMode
не имеет значения, потому что AsyncPostBackSourceElementID
фактически возвращает имя кнопки, а не идентификатор.Тем не менее, вы можете легко получить название кнопки через свойство UniqueID
:
if (ScriptManager1.AsyncPostBackSourceElementID == Button1.UniqueID)
{
//do whatever
}
Я думаю, вы неправильно понимаете цель ClientIDMode
.Идентификаторы, которые генерирует ASP.NET, применяются к клиентской части, и в выделенном фрагменте кода вы все равно можете получить доступ к элементам управления по идентификаторам, назначенным им в разметке.
<asp:Panel ID="Panel1" runat="server">
<asp:Label ID="Label1" runat="server" />
</asp:Panel>
Когда это отображается, уникальный идентификатор (ClientID) будет сгенерирован для каждого элемента управления с использованием комбинации назначенного вами идентификатора и идентификаторов любых восходящих контейнеров именования.В этом случае Panel1
является контейнером именования, поэтому сгенерированный идентификатор будет выглядеть следующим образом:
<span id="ctl00_Panel1_Label1"></span>
Однако в выделенном фрагменте кода вы все равно можете получить доступ к элементу управления с помощью исходного идентификатора, назначенного ему:
var labelText = Label1.Text;
Сгенерированный идентификатор вступает в действие только на стороне клиента, где, например, вам может понадобиться доступ к элементу управления из JavaScript;Вы могли бы затем ClientID найти его.
var labelText = document.getElementById("<%=Label1.ClientID%>").innerText;