2009-09-11 7 views
1

J'ai une page référencée via un tag <script> à partir d'une page sur un autre site. Dans le script src, je passe dans la forme que je veux que mon script construise (à partir d'une table db), et le div où la forme construite dynamiquement devrait aller. La page d'appel ressemble à ceci:Méthodes pour générer dynamiquement JavaScript dans une page ASPX?

<div id="FormContainer"></div> 
<script type="text/JavaScript" src="http://www.example.com/GenerateForm.aspx?FormId=1&div=FormContainer"></script> 

GenerateForm.aspx contient le code qui lit les paramètres QueryString pour la FORMID et la Div Id, et JavaScript sorties qui bâtira la forme.

Ma question est la suivante. Quelles sont les différentes méthodes pour "sortir" le JavaScript? Une partie du JavaScript est statique, et peut être empaquetée dans un fichier .js externe et jQuery aussi. Mais dois-je ajouter cela sur la page de balisage GenerateForm.aspx? Ou devrais-je utiliser un ScriptManager?

Et qu'en est-il du JavaScript généré dynamiquement? Actuellement, je suis en train d'utiliser Response.Write() pour une preuve de concept, mais à la place, devrais-je faire autre chose? Utiliser un contrôle Literal sur la page et définir sa valeur? Utiliser un ScriptManager? Autre chose?

Je sais que c'est une question verbeuse, alors merci d'avance!

Répondre

1

Si vous souhaitez utiliser un fichier Javascript référencé séparé, vous voudrez probablement utiliser un fichier ashx. Fondamentalement, il s'agit simplement d'un gestionnaire générique que vous utiliserez pour écrire directement dans le flux de sortie sans avoir à gérer le cycle de vie de la page ASP.NET. Si vous ajoutez un gestionnaire générique de base (.ashx) à votre site à partir de la boîte de dialogue Ajouter un nouvel élément, le modèle doit être assez directionnel, en utilisant context.Response.Write() pour afficher votre Javascript dynamiquement. Le ScriptManager est plus utile si vous souhaitez générer des lignes individuelles de Javascript à exécuter à certains moments, comme après le déclenchement d'un événement. Ensuite, vous pouvez faire ScriptManager.RegisterClientBlock(this, this.GetType(), "CodeBlock", "alert('Button clicked');", true); pour afficher une boîte d'alerte client après avoir cliqué sur un bouton, par exemple.

Les fichiers statiques doivent être gérés de cette manière - de manière statique. Le serveur peut gérer la mise en cache et ne provoque pas de traitement inutile si vous faites référence au fichier de script statique directement à partir de la balise de script. Toutefois, si vous devez charger un script statique dynamiquement, vous pouvez, par exemple, créer un littéral contenant la balise <script> à l'intérieur. De cette façon, il utilise la version en cache du navigateur du fichier statique.

Questions connexes