javascript - 当文件是比域更深的文件夹时,用JS访问文件

标签 javascript asp.net-mvc razor

我们有一个使用子域的 MVC 站点。不是在传统的 sub.domain.com 中,而是我们使用 domain.com/sub。源文件都存在于每个子域的子文件夹中,因为每个子域可能有一些略有不同的内容。这导致开发团队必须将 JS 直接放入 razor 页面中,以便 razor 代码能够更新如下 URL。

var temp = $('div').load('@Url.Content("~/Images/Excel.png")');

不幸的是,在单独的 JS 文件中使用如下代码会尝试从domain.com 而不是domain.com/sub 加载

var temp = $('div').load('/Content/Templates/warning.html');

这些内容会添加到域中,并且可以随客户端而更改。有没有一种方法可以在像 JS 中那样加载文件时获取域加子,而不需要将代码放入 Razor 中?我更喜欢关注点分离,因为我们有时会加载脚本,而这些脚本甚至因此而未被使用。

最佳答案

在类似情况下,我总是做的是在 main.js 中创建一个函数,或者为共享 js 文件使用任何名称,修改函数中的 URL 并使用该函数作为发起人:

main.js中:

var loadFile = function(selector,path){
    $(selector).load('/sub'+path);
}

然后无论何时何地您想要加载文件:

var temp = loadFile('div','/Content/Templates/warning.html');

更新

您可以升级您的 loadFile 函数,让它知道是否需要从网站的根目录加载:

var loadFile = function(selector,path,loadFromRoot){
    var root=(loadFromRoot) ? '' : '/sub';
    $(selector).load(root+path);
}

关于javascript - 当文件是比域更深的文件夹时,用JS访问文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38896151/

相关文章:

c# - 处理谷歌地图的纬度/经度坐标

c# - 两害相权取其轻? ViewModel 中的标记还是 View 中的逻辑?

asp.net - 两次调用 RenderSection ......?

javascript - 为什么我得到 ENONET : no such file or directory when the file exists? node.js

javascript - 对于简单的 HTML5 + jQuery 应用程序,我应该使用什么 JavaScript UI 测试框架?

javascript - 将 CSS tilemap 添加到 Canvas

c# - 如何从 MVC4 中的 View 编辑父项的属性?

c# - MVC 中每个请求的带有 Owin DbContext 的 Entity Framework

c# - 如何为 Html.BuildUrlFromExpression 调用指定默认区域

javascript - 在 youtube 中获取视频大小