ResolveUrl in external JavaScript file in asp.net project

Posted Chuck Lu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ResolveUrl in external JavaScript file in asp.net project相关的知识,希望对你有一定的参考价值。

https://stackoverflow.com/questions/11263425/page-resolveurl-is-not-working-in-javascript

The problem, as poncha pointed out, is that as far as ASP.NET is concerned, the content delivered in your .js file is a string. It does not apply any sort of rendering before IIS delivers it. It gets the same treatment any other content file would, like a .jpg or .png.

In order to call server side methods (like ResolveUrl), you need to use the <% ... %> syntax within any page that is parsed by ASP.NET (like an .aspx or .master file).


By the way, these little code blocks go by a lot of different names:


In particular, we want a Displaying Expression with the syntax <%= ... %>, where:

the value that is entered after the equals sign is written into the current page

Knowing that, we can build our own own URL by using ResolveClientUrl() which:

returns a URL string suitable for use by the client to access resources on the Web server

To this, we‘ll pass in the Web Application Root Operator or ~ character, where ASP.NET:

resolves the ~ operator to the root of the current application:

By combining these, we can save the result of the displaying expression into a javascript variable by placing the following code on your Master Page (adapted from Joel Varty‘s blog):

The following script should place before the external JavaScript reference

<script type="text/javascript">
    var baseUrl = ‘<%= Page.ResolveClientUrl("~/") %>‘;
</script>

Since JavaScript variables are inherently global, any other script can now access the baseUrl variable, so we can utilize it from the .js file with the following script:

function ResolveUrl(url) {
    return url.replace("~/", baseUrl);
}

Now you can call ResolveUrl("~/DynamicMenu.ashx") directly from your javascript file and it will create the appropriate URL by stripping out "~/" and replacing it with the baseUrl created earlier by the server side script.


Further Reading:

 

以上是关于ResolveUrl in external JavaScript file in asp.net project的主要内容,如果未能解决你的问题,请参考以下文章

Page.ResolveUrl 与 Ajax 的日历扩展器冲突 [重复]

strip.position external in 两列 facet_wrap 图

Kentico-JWPlayer文件解析url

ja-netfilter-all,IntelliJ IDEA 2021.3.2 (Ultimate Edition)

ja-netfilter-all,IntelliJ IDEA 2021.3.2 (Ultimate Edition)

The absolute uri: [http://java.sun.com/jsp/jstl/core] cannot be resolved in either web.xml or the ja