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.Content
或 ResolveUrl
之类的东西。如果这样做,请确保考虑浏览器和/或服务器缓存,以免浪费资源。
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");
【讨论】:
以上是关于ASP.NET MVC 视图 - 获取 JavaScript 的虚拟路径 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
asp.net mvc 从视图中的文本框获取数据返回存储过程以编辑记录
如何从 javascript 文件中获取函数的值到 ASP.NET MVC 视图?
如何在 ASP.Net MVC 5 视图中获取 ApplicationUser 的自定义属性值?