You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ASP.NET Core 3.1视图脚本中指定本地JSON文件路径

解决ASP.NET Core 3.1中DataTables本地波斯语文件路径问题

嘿,我来帮你搞定这个路径问题!你遇到的核心问题是:客户端JavaScript不认识ASP.NET Core的~路径前缀——这个前缀是服务器端Razor引擎用来指代网站根目录的,直接写在JS里浏览器根本不知道它是什么意思。下面给你两种靠谱的解决方案:

方案1:在Razor视图中使用服务器端路径生成(最直接)

在你的Razor视图(.cshtml文件)里,用ASP.NET Core的@Url.Content()方法把~/js/Persian.json转换成客户端能识别的绝对路径。修改后的脚本如下:

<script language="JavaScript" type="text/javascript" src="~/js/datatables.min.js"></script>
<script>
jQuery(document).ready(function ($) {
    $("#myDummyTable").DataTable({
        //"searching": false,
        "language": {
            "url": '@Url.Content("~/js/Persian.json")'
        }
    });
});
</script>

当Razor渲染页面时,@Url.Content()会把~替换成你的网站根路径(比如http://yourdomain.com/),最终生成的URL会是类似/js/Persian.json的格式,浏览器就能正确找到本地文件了。

方案2:全局根路径变量(适合单独JS文件)

如果你的DataTables初始化代码是放在单独的.js文件里(不是直接写在Razor视图中),那没法直接用Razor语法。这时候可以在布局页(_Layout.cshtml)里定义一个全局变量,把网站根路径传递给客户端:

<!-- 在_Layout.cshtml的<head>或底部脚本区添加 -->
<script>
window.siteRoot = '@Url.Content("~/")';
</script>

然后在你的JS文件里,用这个全局变量拼接路径:

jQuery(document).ready(function ($) {
    $("#myDummyTable").DataTable({
        //"searching": false,
        "language": {
            "url": window.siteRoot + "js/Persian.json"
        }
    });
});

额外注意事项

  • 确保Persian.json文件的属性设置正确:在Visual Studio中右键该文件→属性→“复制到输出目录”选择“如果较新则复制”或“始终复制”,这样发布项目时文件会被正确部署到wwwroot/js目录下。
  • 也可以直接用绝对路径(比如/js/Persian.json),但这种方式依赖页面所在的位置,如果你的页面在子目录里,可能会出问题,所以还是用服务器端生成路径更可靠。

内容的提问来源于stack exchange,提问作者MinaMRM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 22:12:43