ASP.NET MVC视图 - 获取JavaScript的虚拟路径

时间:2016-06-08 16:32:36

标签: javascript c# asp.net-mvc

我的ASP.NET MVC项目在本地调试时运行良好。

然而,一旦它被部署到生产中,真正的"路径&#34>该应用程序是http://servername/virtualpath/Home/Index,仅作为示例。

有些JavaScript需要声明真正的baseUrl,无论其部署的环境如何。

总之,我需要一个JavaScript变量来保存http://servername/virtualpath/,当它被部署到这样的环境时,或者http://servername/当它在诸如debug之类的环境中运行时。{/ p>

1 个答案:

答案 0 :(得分:0)

要添加链接的问题,如果您正在谈论静态JavaScript文件,则无法访问您的服务器代码,因此您有两个选项:

您可以将javascript放入.aspx文件或常规控制器操作/视图中,这样您就可以访问服务器代码,并可以使用Url.ContentResolveUrl之类的内容。如果这样做,请确保考虑浏览器和/或服务器缓存,以免浪费资源。

<强> myfile.js.aspx

<%@Page Language="C#" %>
<%
    Response.ContentType = "application/javascript";
    Response.Cache.SetCacheability(HttpCacheability.Public);
    Response.Cache.SetExpires(DateTime.Now.AddHours(1));
%>

var imagePath = "<%= ResolveUrl("~/images/myimage.png") %>";

或者在您的布局页面上(在任何其他<script>标签之前),您可以使用相对路径放置隐藏字段或javascript片段,然后调用它:

<强> _Layout.cshtml:

<script>
    window.resolveUrl = function(url) {
        return "@Url.Content("~")" + url; // Handle slashes, nulls, etc...
    };
</script>

<强> myfile.js

var imagePath = resolveUrl("images/myimage.png");