2011-11-28 6 views
11

http://i.stack.imgur.com/dVjHt.jpgRegisterClientScriptBlock ¿usa los parámetros en escenarios reales?

enter image description here

nunca he entendido el uso real de los Control, type, key usos de esta clase.

En general, he utilizado siempre con: this , GetType() , "xx"

pero ahora realmente quieren entender.


MSDN:

control: "el control que registra el script de cliente"

así que ...? ¿Qué diferencia hace que lo haya registrado? el script estará en el encabezado de la página ....

Tipo: "el tipo del bloque de script de cliente"

tipo ??? es javascript ¿Por qué quiere otro tipo de mí?

clave: "un indentifier única"

que pueda entender - para los casos que más tarde para eliminar ... pero me encantaría para algunas explicaciones más avanzadas

¿Puedo tener por favor, un verdadero escenario de la vida en el que I VERDADERO tiene que jugar con esos params?

+1

Niza cuestión de hecho. También me preguntaba las mismas respuestas ... – Tarik

Respuesta

2

la parte más importante es el control el que el control de las etiquetas HTML que desea registrar el guión por ejemplo, si usted tiene el control de usuario y desea ejecutar la secuencia de comandos sólo para que el uso de esta línea

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

pero cuando se desea registrar el bloque y la escritura a toda la parte de la página que uso de esta línea en el código CS de control de usuario:

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

¿Está realmente seguro de eso? El javascript tendrá acceso a la página html completa, para que pueda acceder a cada elemento de la página aunque lo registre para el control. –

+1

tiene razón pero cuando utiliza UpdatePanel habrá problema [link] (http://www.dotnetcurry.com/ShowArticle.aspx?ID=200) - –

0

Después de mirar en MSDN he encontrado el método con parámetros ligeramente diferentes, pero creo que las respuestas que deben dar una visión más clara: (http://msdn.microsoft.com/en-us/library/bb350750.aspx):

control: bloques de script de cliente que están registrados mediante el uso de este método se envían a la página solo cuando el control representa un control que está dentro de un control UpdatePanel que se está actualizando.

Tipo: Este parámetro se especifica normalmente mediante el operador typeof (C#) o el operador GetType (Visual Basic) para recuperar el tipo de control que se está registrando el guión.

Y supongo que la clave solo es para asegurarse de que un bloque de código no se incluye dos veces? ¿O le da una advertencia si usa la misma clave nuevamente?

0

El método System.Web.UI.ScriptManager.RegisterClientScriptBlock llama detrás de las escenas en el método interno System.Web.UI.ScriptRegistrationManager.RegisterClientScriptBlock que utiliza el parámetro de control para hacer una llamada a System.Web.UI.ClientScriptManager.RegisterClientScriptBlock haciendo referencia control.Page.ClientScript.RegisterClientScriptBlock.

Así que, en realidad cuando se hace una llamada como ésta:

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

Es idéntica a llamar:

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

El parámetro tipo es muy útil cuando dos tipos diferentes intentar registrar secuencias de comandos con llaves de cuerda idénticas.

+0

¿Qué hace que el guión sea único? la clave ? o combinación de tipo más algo? y por qué el constructor quiere de mí el control && type ?? ¿Puedes dar un escenario de la vida real? –

+0

El método 'System.Web.UI.ClientScriptManager.RegisterClientScriptBlock' genera internamente una nueva clave basada en los valores del tipo y la clave de los parámetros. –

+0

¿Qué sucede cuando dos tipos diferentes intentan registrar scripts con claves de cadena idénticas? –

Cuestiones relacionadas