在JavaScript中进行基于"root"的路径引用的任何聪明方式,就像我们~/
在ASP.NET中的方式一样?
让您的网页生成标记,例如:
然后,在JavaScript中有一个提取值的函数,例如:
function getHome(){ return document.getElementById("ApplicationRoot").href; }
使用基本标签:
...
从现在开始,无论是在javascript还是html中,此页面上的任何链接都将使用相对于基本标记,即" http://www.example.com/myapp/ ".
您还可以使用asp.net功能VirtualPathUtility
:
注意:我没有将路径编码为JSON -string(转义引号,控制字符等).我不认为这是一个大问题(例如,引号不允许在URL中转义),但是人们从不知道......
我通常在js文件的顶部创建一个变量并为其分配根路径.然后我在引用文件时使用该变量.
var rootPath = "/"; image.src = rootPath + "images/something.png";
〜/是应用程序根目录而不是文字根,它互为〜/表示
要在JavaScript中创建一个字面根,它只是/,即"/root.html".在JavaScript中无法获得类似于应用程序级别的路径.
您可以在ASPX文件中破解它并将其输出到标记中,但我会考虑其安全含义.
可以改进Kamarey的答案以支持动态基本路径:
无论部署配置如何,这都将确保正确的根路径.
公平地说,这不能回答原始问题,但它消除了从javascript获取根路径的大多数需求.只需在任何地方使用相对URL,而不使用斜杠作为前缀.
如果你仍然需要从javascript访问它,添加一个id属性并使用document.getElementFromId()
MiffTheFox建议 - 但在base-tag上.
另一个更简单,更通用的选项是:
那么无论哪个子目录,URL都将始终正确呈现。