我有一个 javascript应用程序,它在视图中运行(index.cshtml)。
问题:
问题是所有相对路径相对于当前网址 ,这在简单的html webapp中是可以的,但在asp mvc中则没有。 js-app不应该打扰它是在普通的html文件中提供还是通过asp mvc页面提供。
即。 http://www.domain.com/<controller>/<action>/包含一个脚本 test.js 。此脚本加载相对于它的外部xml文件,即。 “的数据/ data.xml中”。生成的网址会显示http://www.domain.com/<controller>/<action>/data/data.xml。找不到。
问题:
有没有办法将静态文件(图像,...,甚至是js文件)路由到内容文件夹,如“〜/ Content / controller / action /&lt; pathToFile&gt; / ”?
任何帮助表示赞赏!
LG warappa
PS:我知道Url.Content(),但这不适合。
答案 0 :(得分:2)
解决方案不需要映射 - 标题中只有一个简单的html标记:
<base href="@(Request.Url.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped) +
Url.Content("~/content/controller/action/"))" />
LG warappa
修改强>
有些浏览器需要一个绝对的网址 - 样本已更新。
答案 1 :(得分:1)
您可以使用绝对URL地址访问静态资源:
$('img').attr('src', '/Content/Pictures/picture1.png');
或
<script src="/Scripts/script.js"></script>
通过这种方式,无论您是在/{Controller}/{Action}/{View}
,{Area}/{Controller}/{Action}/{View}
,自定义路由还是在静态脚本html中加载脚本,都将始终获得与页面基址相同的资源页。
或许您正在寻找的是使用css文件,因为CSS的url('<path>')
解析了相对于CSS文件位置的地址。您只需要导入一个包含所有资源(图像?)文件路径的CSS文件。然后脚本可以引用不同的类名,因此根本不知道位置。这就像jQuery UI这样的库。但同样需要相对于CSS文档的固定文件夹结构。