Ich bin mit dieser dynamischen Steuerelement-ID-Generation fest, wenn ich meine Steuerelemente (sagen Button) in ContentPage (die von MasterPage geerbt wird) innerhalb <asp:Content></asp:Content>
wenn die Seite im Browser dann gerendert wird STEUER-ID geändert werden, las ich ScottGu article on 'clientIDMode' und ich dachte, mein Problem ist vorbei, damit ich innen ‚Web.Config‘ ‚ClientIDMode‘ gesetztDynamische Steuerelement-ID-Generierung von ContentPage
<pages clientIDMode="Static"></pages>
Aber das Problem weiterhin besteht kann ich meine Kontrollen von Code hinter wie diese nicht beziehen ,
//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) Kann ich nicht nur die Id der Kontrollen verwenden, die ich in der Markup angegeben haben (wie wenn ich keine MasterPage habe)?
PS: Auf AsyncPostback möchte ich auf der Grundlage spezifischer Knopf bestimmte Operationen auszuführen, die AsyncPostback gemacht, zu tun, dass ich Wert von AsyncPostBackSourceElementID
zu überprüfen, die leider geändert kehrt ControlID
Was ist das Problem mit ASP.NET die Benennung zu behandeln? Sie können das Steuerelement weiterhin anhand der von Ihnen angegebenen ID referenzieren, z. B. "Label1". –
@JamesJohnson Aber ich kann Button1 nicht durch seinen ursprünglichen Namen beziehen ..! –
Ich denke, Sie könnten den Zweck von 'ClientIDMode =" Static "' falsch verstehen. Die von ASP.NET generierten IDs gelten nur für die Clientseite. Im Code-Behind können Sie auf das Steuerelement anhand der ID verweisen, die Sie ihm im Markup zugewiesen haben. Wenn dies nicht geschieht, haben Sie ein anderes Problem. –