2011-11-28 9 views
11

http://i.stack.imgur.com/dVjHt.jpgParametry RegisterClientScriptBlock są używane w rzeczywistych scenariuszach?

enter image description here

nigdy nie zrozumieli prawdziwe korzystanie z Control, type, key zwyczajów tej klasy.

W ogólnym Ive zawsze stosować: this , GetType() , "xx"

ale teraz naprawdę chcą zrozumieć.


MSDN:

Kontrola: "kontrola, która rejestruje skrypt klienta"

więc ...? jakie to ma znaczenie, kto to zarejestrował? skrypt znajdzie się na początku strony ...

Rodzaj: "rodzaj bloku skryptu klient"

typu ??? jego javascript. dlaczego on chce ode mnie innego rodzaju?

Key: „unikalnym identyfikatorem”

że mogę zrozumieć - w przypadkach, które później, aby usunąć ... ale chciałbym dla niektórych bardziej zaawansowanych wyjaśnień

mogę czy mam do czynienia z rzeczywistym scenariuszem życia, w którym muszę grać z tymi parametrami? prawdziwy

+1

Nicea zapytania rzeczywiście. Zastanawiam się również nad tymi samymi odpowiedziami ... – Tarik

Odpowiedz

2

najważniejszej części jest Kontrola które kontrolują w tagach html chcesz zarejestrować skrypt na przykład, jeśli masz kontrolę użytkownika i chcesz uruchomić skrypt właśnie dla tego zastosowania tej linii

ScriptManager.RegisterStartupScript(this, this.GetType(), "alertscript", "document.getElementById('userControl_h1TAG')", true); 

ale jeśli chcesz się zarejestrować blok i skrypt do wszystkich części tego strona wykorzystania tej linii w kodzie CS łatwość sterowania:

ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "alertscript", "document.getElementById('page_h1TAG')", true); 
+0

Czy jesteś tego pewien? Javascript będzie miał dostęp do całej strony html, więc możesz uzyskać dostęp do każdego elementu na stronie, nawet jeśli zarejestrujesz go dla kontroli. –

+1

masz rację: , ale kiedy używasz UpdatePanel, będzie problem [link] (http://www.dotnetcurry.com/ShowArticle.aspx?ID=200) - –

0

Po patrząc na MSDN znalazłem metodę z nieco innych parametrach, ale myślę, że odpowiedzi powinny dać lepszy wgląd: (http://msdn.microsoft.com/en-us/library/bb350750.aspx):

Kontrola: bloki skryptu klienta, które są zarejestrowane za pomocą tej metody są wysyłane na stronę tylko wtedy, gdy formant reprezentuje kontrolkę wewnątrz formantu UpdatePanel, który jest aktualizowany.

Rodzaj: Parametr ten jest zwykle określona za pomocą operatora typeof (C#) lub operatora GetType (Visual Basic) do pobierania typ kontroli, który rejestruje skrypt.

Zgaduję, że kluczem jest tylko upewnienie się, że jeden blok kodu nie jest dołączony dwa razy? Lub daje ostrzeżenie, jeśli ponownie użyjesz tego samego klucza?

0

Sposób System.Web.UI.ScriptManager.RegisterClientScriptBlock zwraca za kulisami do metody wewnętrznej System.Web.UI.ScriptRegistrationManager.RegisterClientScriptBlock że używa parametru kontrolę aby nawiązać połączenie z System.Web.UI.ClientScriptManager.RegisterClientScriptBlock poprzez odniesienie control.Page.ClientScript.RegisterClientScriptBlock.

Tak, rzeczywiście, kiedy podczas rozmowy tak:

MyScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertScript", "alert('hi')", true); 

Jest identyczny z numerem:

this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "alertScript", "alert('hi')", true);   

parametr typ jest przydatny, gdy dwa różne rodzaje próbuje zarejestrować skrypty z identyczne klucze strunowe.

+0

Co sprawia, że ​​scenariusz jest wyjątkowy? klucz ? lub kombinacja typu plus coś? i dlaczego konstruktor chce ode mnie sterowania && type ?? czy możesz podać prawdziwy scenariusz życia? –

+0

Metoda "System.Web.UI.ClientScriptManager.RegisterClientScriptBlock' generuje wewnętrznie nowy klucz na podstawie wartości typu i klucza parametrów. –

+0

co się dzieje, gdy dwa różne typy próbują zarejestrować skrypty z identycznymi kluczami? –

Powiązane problemy