2009-12-18 3 views

Répondre

4

La méthode Response.Write peut être utilisée pour sortir du code pendant la phase de rendu de la page. La balise de serveur <%= %> est un raccourci pour <%Response.Write()%>.

Si vous utilisez Response.Write à partir du code qui se trouve derrière, vous allez écrire sur la page avant le début du rendu, de sorte que le code se retrouvera hors du document html. Bien que le navigateur exécute le code, il ne fonctionne pas correctement. Avoir quelque chose avant la balise doctype fera que le navigateur ignore le doctype et rende la page en mode quirks, ce qui rompt généralement la mise en page. En outre, comme le script s'exécute avant que n'importe quoi de la page existe, le code ne peut pas accéder aux éléments de la page.

La méthode ClientScript.RegisterStartupScript est le moyen préféré d'ajouter dynamiquement un script à la page. Il rendra le script à la fin du formulaire afin qu'il ne casse pas le documnet html, et il peut accéder aux éléments du formulaire.

De plus, vous attribuez une identité à chaque script, ce qui signifie que les doublons sont supprimés. Si un contrôle utilisateur enregistre un script et que vous utilisez plusieurs instances du contrôle utilisateur, le script ne sera rendu qu'une seule fois sur la page.

+0

Merci M. Guffa pour la réponse –

+0

vous voulez dire que response.write() obtiendra avant le rendu de la page dans la méthode ClientScript.RegisterStartupScript sera après la publication suis-je droit? M. Guffa –

+0

@Surya: Les deux vont ajouter le code de la page qui est envoyée au navigateur, de sorte que le code sera exécuté lorsque la page se charge dans le navigateur. La différence est où dans la réponse le code est placé. Avoir le code devant le document signifie que le navigateur exécute le code en premier, puis charge le reste de la réponse, qui est la page réelle. Si vous avez Response.Write (""); la fenêtre sera vide lorsque l'alerte s'affiche et la page se charge après la fermeture de l'alerte (probablement déformée en raison du doctype ignoré). – Guffa

0

Response.Write

La méthode Write écrit une chaîne spécifiée à la sortie HTTP en cours.

ClientScriptManager.RegisterStartupScript

Enregistre le script de démarrage avec l'objet Page.

+0

Quelle est la signification de Registres le script de démarrage avec l'objet Page. M.adamantium merci pour la réponse –

+0

Si vous voulez exécuter un bloc de script après une publication, vous pouvez utiliser cette méthode. – rahul

+0

ok je comprends merci M. adamantium pour la réponse –

3

Il y a une énorme différence. Fondamentalement Response.Write écrira à votre flux de réponse maintenant, normalement cela mettra tout ce que vous écrivez tout en haut de votre sortie de page, même avant l'étiquette (sauf si vous l'appelez après l'événement de rendu de page). Lorsque vous utilisez RegisterStartupScript, il attend et écrit votre JavaScript dans le flux de réponses après que les contrôles de la page ont rendu (IE, les contrôles ont écrit leur code HTML dans le flux de réponse). Cela signifie que le JavaScript que vous enregistrez sera exécuté par le navigateur après l'autre HTML avant qu'il ait été chargé dans le DOM. Ceci est très similaire à l'événement. Une autre chose est si "inscrit" le script, donc si vous avez plus d'un contrôle sur la page qui a besoin de JavaScript, ils peuvent vérifier si elle a déjà été enregistrée, elle est seulement rendue une fois et les deux contrôles l'utilisent.

J'espère que cela a du sens, il y a plus de détails, mais j'ai essayé de garder les choses simples.

+0

vous voulez dire réponse.write() obtiendra avant le rendu de la page dans ClientScript.RegisterStartupScript méthode obtiendra après la publication suis-je droit? M.dukk –

+0

Non, une publication est lorsque la page est actualisée mais reste sur la même page. Cela se produira la première fois que la page est demandée. –

0

Comme je pense, ces deux méthodes ne sont pas liées. Response.Write() peut être utilisé pour écrire quelque chose sur la page rendue. Alors que ClientScript.RegisterStartupScript() peut être utilisé pour enregistrer un javascript au démarrage de la page.