我的ASP.NET MVC项目在本地调试时运行良好。
然而,一旦它被部署到生产中,真正的"路径&#34>该应用程序是http://servername/virtualpath/Home/Index
,仅作为示例。
有些JavaScript需要声明真正的baseUrl
,无论其部署的环境如何。
总之,我需要一个JavaScript变量来保存http://servername/virtualpath/
,当它被部署到这样的环境时,或者http://servername/
当它在诸如debug之类的环境中运行时。{/ p>
答案 0 :(得分:0)
要添加链接的问题,如果您正在谈论静态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");