ASP.NET MVC 视图 - 获取 JavaScript 的虚拟路径 [重复]

Posted

技术标签:

【中文标题】ASP.NET MVC 视图 - 获取 JavaScript 的虚拟路径 [重复]【英文标题】:ASP.NET MVC View - Get Virtual Path for JavaScript [duplicate] 【发布时间】:2016-06-08 16:32:35 【问题描述】:

我的 ASP.NET MVC 项目在本地调试时可以完美运行。

但是,一旦部署到生产环境,应用程序的真正“路径”是http://servername/virtualpath/Home/Index,仅作为示例。

有一些 javascript 需要声明真正的 baseUrl,无论它部署到什么环境。

总之,当它部署到这样的环境时,我需要一个 JavaScript 变量来保存 http://servername/virtualpath/,或者当它在调试等环境中运行时只保存 http://servername/

【问题讨论】:

***.com/questions/1445265/… 【参考方案1】:

要补充链接的问题,如果您谈论的是静态 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") %>";

或者在您的布局页面上(在任何其他 &lt;script&gt; 标记之前),您可以放置​​一个隐藏字段或一段带有相对路径的 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");

【讨论】:

以上是关于ASP.NET MVC 视图 - 获取 JavaScript 的虚拟路径 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

asp.net mvc 从视图中的文本框获取数据返回存储过程以编辑记录

如何从 javascript 文件中获取函数的值到 ASP.NET MVC 视图?

如何在 ASP.Net MVC 5 视图中获取 ApplicationUser 的自定义属性值?

从asp.net mvc的部分视图中的文本框中获取值

无法在 ASP.NET MVC 5 中从视图到控制器获取 Select2 标记值

asp.net mvc 分页之后Request.Form获取不到数据