2009-09-15 18 views
9

Czy można ustawić ClientID dowolnego kontrolera serwera asp.net? Jak mogę to zrobić?Ustaw identyfikator klienta w asp.net

+0

Dlaczego musisz to zrobić? –

+1

Wyjaśnij, co próbujesz osiągnąć, a następnie możemy zaproponować alternatywę. –

Odpowiedz

19

Dobra wiadomość jest taka, że ​​w VS 2010 .Net 4 będziesz mieć complete control over Client IDs!

Nadal dla aktualnych wersji .Net można dokonać płatności. Zakładam, że potrzebujesz ID dla JavaScript. Jeśli tak, to po prostu identyfikator tak:

<script type="text/javascript"> 
    var myTextBox = $('#<%=TextBox1.ClientID%>'); 
</script> 
+2

+1 za bycie Jedi i czytanie umysłu ebattulgi, "Zdobądź ClientID, którego nie ustawiam" –

+2

Nie zapomnij umieścić znaku # przed <% = oczekującym chcesz uzyskać rzeczywisty obiekt DOM, a nie tylko tekst identyfikatora klienta kontrolki. – KSwift87

+1

Thx @ Kswift87 ma absolutną rację. zaktualizowałem swoją odpowiedź –

3

To niemożliwe. Identyfikator klienta jest generowany przez program ASP.NET. Od MSDN:

Wartość ClientID są generowane przez złączenie wartość identyfikatora kontrolki a wartością UniqueID jego kontrolą macierzystej. Jeśli wartość identyfikatora kontrola nie jest określona, ​​używana jest automatycznie wygenerowana wartość .

1

Nawet myślę, że nie jest to możliwe w Visual Studio 2008. Ponieważ Control.ClientID Property dostać tylko metody

Edit: Ale w Visual Studio 2010 (.NET 4.0) możliwe jest

+1

Jak to jest możliwe? W VS2015 ta metoda jest nadal dostępna. – FrenkyB

1

Jest to funkcja ASP.NET 4.0.

3

radziłbym przed ten sposób, chyba że jesteś pewien, że chcesz to zrobić, ale jest na to sposób. Można zastąpić właściwość ClientID z kontrolki serwera.

public override string ClientID 
{ 
    get { return "whatever"; } 
} 

Ale jak zauważyli inni, nie można tego zrobić z zewnątrz.

1

Program ASP.NET 4 ma właściwość ClientIDMode dla każdego elementu sterującego. Jeśli chcesz wyłączyć ClientID całkowicie można użyć this trick - to działa na każdej kontroli zakaz ogłaszania

0

dla VS 2010, .NET 4.0:

Jeśli tylko spróbować ustawić ctrl.ClientID="stringID" dostaniesz Błąd, mówiąc, że ClientID jest tylko do odczytu. Można kontrolować wartość ClientID korzystając ClientIDMode - która określa algorytm, z którymi ClientID jest ustawiony:

ctrl.ID = "IDstring"; 
ctrl.ClientIDMode = ClientIDMode.Static; //ClientID value is set to the value of ID 

Znaczniki HTML będzie oznaczyć html kontrolą za pomocą ID kontrolki. W ten sposób masz pewną kontrolę od kodu z tyłu.

Powiązane problemy