problème strong> Lorsque vous travaillez avec des chefs-pages, une irritation commune que je rencontre est que les balises de script dans le maître sont relatives à la page consommatrice. P> Donc, par exemple, votre JavaScript pourrait fonctionner si votre page consommatrice est à la base de votre application, mais lorsque vous mettez une autre page dans un sous-dossier, le chemin relatif se casse et le JavaScript n'est pas trouvé. Et il n'y a pas de moyen d'utiliser des chemins absolus dont je suis au courant dans ce cas. P> Cette dernière fois, j'ai décidé de vraiment attaquer cela et de trouver une bonne solution. p> Solutions proposées forte> P> J'ai essayé une stratégie qui a tourné autour de Calling ClientcriptManager.registerclientscriptions dans la page_load, mais cela n'a pas semblé rendu (accordé, mon La compréhension de la plomberie correspondante est incomplète). p> J'ai essayé un autre qui a ressemblé à ceci comme ceci: p> ... mais qui jette une exception: la collection de contrôles ne peut pas être modifiée car le contrôle contient des blocs de code. P> Code de travail (mais quelque peu fugchy) strong> p> donc, ce que j'ai fini par aller, c'est un contrôle littéral dans la tête où je restitue Le HTML approprié: p> Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.SetupLiteralScriptsTag()
End Sub
Private Sub SetupLiteralScriptsTag()
'Build the script tags to import our JavaScript
Dim Builder As New StringBuilder
Builder.AppendLine(String.Format("<script type=""text/javascript"" src=""{0}""""></script>", ResolveClientUrl("~/js/jquery-1.3.2.min.js")))
Builder.AppendLine(String.Format("<script type=""text/javascript"" src=""{0}""""></script>", ResolveClientUrl("~/js/jquery.corners.min.js")))
Builder.AppendLine(String.Format("<script type=""text/javascript"" src=""{0}""""></script>", ResolveClientUrl("~/js/bg.pos.js")))
Builder.AppendLine(String.Format("<script type=""text/javascript"" src=""{0}""""></script>", ResolveClientUrl("~/js/moonstone.js")))
Me.LiteralScriptTags.Text = Builder.ToString
End Sub
5 Réponses :
J'utilise une syntaxe relative de l'application partout. Il dispose de l'inconvénient que si vous changez de nom / chemin de l'application, vous avez beaucoup de travail pour mettre à jour toutes vos URL. P>