ASP.Net - Benennung Behälter und ClientIDMode="Static"
MSDN-Dokumentation Mitgliedstaaten hinsichtlich der ClientIdMode:
Statische Der ClientID-Wert festgelegt ist, der Wert der ID-Eigenschaft. Wenn die Steuerung ist ein naming-container, die Kontrolle als
an der Spitze der Hierarchie des naming-Container für alle Steuerelemente, die es
enthält.
Quelle: http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode%28v=vs.100%29.aspx
Aber ich bin nicht der Suche nach der "Spitze der Hierarchie" business der Fall zu sein. Zum Beispiel, ich habe ein usercontrol:
<uc1:WidgetsListControl runat="server" id="WidgetsListControl" ClientIDMode="Static" />
Für eine gute Maßnahme, habe ich die clientidmode in die control source so gut, obwohl ich bin nicht sicher, wo Sie benötigt wird:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WidgetsListControl.ascx.cs" Inherits="WebApplication1.WidgetsListControl" EnableViewState="false" ClientIDMode="Static" %>
Innerhalb der Benutzer die Kontrolle, ich habe eine textbox:
<asp:TextBox ID="testTextBox" runat="server" />
Meine Erwartung ist, dass das text-Feld mit dem Namen etwas wie WidgetsListControl$testTextBox
Aber was ich finden Sie auf Ansicht Quelle:
<input name="ctl00$MainContent$WidgetsListControl$testTextBox" id="testTextBox" type="text"/>
Was bin ich? Gibt es eine Möglichkeit, das zu erreichen, was ich Suche (kürzere ids), ohne 'static' auf alle Steuern, die in das Benutzersteuerelement?
EDIT:
Eigentlich nach der Suche näher, ich finde, dass das ID-Attribut ist die Arbeit wie beschrieben in der MSDN - aber das name-Attribut wird immer noch das volle Verkettung der naming-container Hierarchie.
Erhalten eine Website von hoher Komplexität, die Namen und IDs der Steuerelemente starten, um die Mehrheit der Bandbreite (markup-Größe). Ich kann nicht scheinen zu finden, eine gute Abhilfe, um schlanker zu den markup-Code in dieser Hinsicht.
InformationsquelleAutor Shaun Rowan | 2013-05-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie dieses Steuerelement in einem Panel oder etwas mit
runat="server"
und das custom control selbst ist ein naming-container für seine Kinder. Wenn Sie möchten Bezeichner werden, wie Sie den Namen nicht ändern, werden Sie wollen, verwenden Sie diePredictable
(IIRC) client-id-Modus.Hinweis: obwohl suchen in der Dokumentation für
Predictable
dies scheint nicht der Fall zu sein, ich bin sicher, es ist was ich immer verwendet, um 'sauber' .NET-IDS in ASP.NET.Weiter, wenn Sie sich bewerben möchten der ClientIDMode Global, dann geben Sie es im web.config-Datei in das Attribut der
<pages>
element.InformationsquelleAutor Grant Thomas
ClientIdMode="Static" funktioniert, wie von Microsoft.
Stellen Sie sicher, dass Sie Ihren Blick auf die id in die generierte Quelle, nicht der name.
Das ist der Fehler, den ich gemacht habe.
InformationsquelleAutor Robert