开发者

ASP.NET: How to (programmatically) attach a <script> tag, containing a link to .js, to <head>?

开发者 https://www.devze.com 2023-03-21 17:53 出处:网络
This is the scenario: I\'m working on a new ASP.NET application that uses master pages for virtually all of the web pages in it, a few of them nested to 4 levels. Due to the size of the project, I wa

This is the scenario:

I'm working on a new ASP.NET application that uses master pages for virtually all of the web pages in it, a few of them nested to 4 levels. Due to the size of the project, I was forced to organize the web pages into folders, at various depth levels. The global, Master (in uppercase) page, located at the root directory, contains some useful Javascript functions that are used all along the web app, and I wanted to place these functions together in a single .js file, in order to keep things, well, in order :D . (They're currently embedded into the Master page).

I discovered recently, however, that <script> tags placed on the <head> block can't have their paths specified as, for example, "~/Scripts/Utils.js", since ASP.NET does not seem to recognize these paths on <script> tags (yet, strangely enough, it does recognize them on <link> tags). I'm trying to avoid inserting a <script> tag on every single web page on the site specifying a relative path to the .js file (that's sort of why I wanted to use master pages in the first place).

So, in essence, given this scenario, I want to ask you, what's the recommended way of inserting, via code, <script> tags into the <head> block of a web page so that I can use, when specifying the link to the .js file, something like        Something.Something(Something, Page.ResolveURL("~/Scripts/Utils.js"));        in the global Master page, so it will resolve to the right path on all the web pages of the开发者_StackOverflow中文版 application, no matter what directory are they inside?

Or is this not the right approach, and I should be using something else entirely?


You can use the ClientScriptManager:

Page.ClientScript.RegisterClientScriptInclude("MyScript", ResolveUrl("~/Scripts/MyScript.js"));

The first argument is a unique key representing the script file, this is to stop subsequent scripts being registered with the same key. E.g. you may have some shared code that does the same thing and could be executed multiple times, so by specifying a key, you ensure the script is only registered the once.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号