Я зациклился на генерации этого динамического управляющего ID, если я поместил свои элементы управления (например, Button) в ContentPage (который наследуется MasterPage) внутри <asp:Content></asp:Content>
, когда страница отображается в браузере, тогда контроль Id меняются, я прочитал ScottGu article on 'clientIDMode', и я думал, что моя проблема закончена поэтому я «ClientIDMode» внутри «» Web.ConfigГенерация динамического кода управления ContentPage
<pages clientIDMode="Static"></pages>
Но проблема сохраняется, я не могу ссылаться мои элементы управления из кода позади, как это ,
//ctl00$Cntnt$Button1 name works but its dynamically created
if (ScriptManager1.AsyncPostBackSourceElementID == "Button1")
{
Label1.Text = "Async PostBack occured @ " + DateTime.Now.ToLongTimeString();
}
ASP.net Markup:
<asp:Button ID="Button1" runat="server" Text="Refresh me" onclick="Button1_Click" />
Browser Side Markup:
<input type="submit" name="ctl00$Cntnt$Button1" value="Refresh me" id="Button1" />
Q) я не могу использовать только идентификатор управления, который я, указанных в разметке (как если у меня нет MasterPage)?
PS: На AsyncPostback я хочу, чтобы выполнить определенные операции на основе определенной кнопки, которые сделаны AsyncPostback, чтобы сделать, что я должен проверить значение из AsyncPostBackSourceElementID
, который, к сожалению, возвращает модифицированный ControlID
В чем проблема с разрешением ASP.NET на именование? Вы все равно можете ссылаться на элемент управления с помощью указанного вами идентификатора, то есть «Label1». –
@JamesJohnson Но я не могу назвать Button1 оригинальным именем ..! –
Я думаю, что вы можете не понимать цель «ClientIDMode =« Статический ». Идентификаторы, которые генерируются ASP.NET, применяются только к стороне клиента. В кодовом коде вы можете обратиться к элементу управления с помощью идентификатора, присвоенного ему в разметке. Если этого не происходит, возникает другая проблема. –