ASP.Net MVC如何呈现脚本元素?

时间:2019-01-25 13:23:10

标签: asp.net-mvc razor

谁能解释一下两者之间的区别?

<script src="/Scripts/custom.js"></script>

和(添加波浪号)

<script src="~/Scripts/custom.js"></script>

@Scripts.Render("~/Scripts/custom.js")

在ASP.NET MVC应用程序中(主要在Razor View代码中)?

我是aware,通常@Scripts.Render用于捆绑和缩小脚本。如您在我的第三个示例中所见,我没有故意使用@Scripts.Render("~/bundles/*"),因为我没有使这个问题看起来像是关于捆绑的问题。我想知道呈现(特定于页面的)脚本的最佳方法是什么。还有其他重要理由要先使用吗?

1 个答案:

答案 0 :(得分:1)

<script src="/Scripts/custom.js"></script>

这是相对于您网站的根目录。期望custom.js文件位于网站根目录的Scripts目录中,例如:example.com/Scripts/custom.js

<script src="~/Scripts/custom.js"></script>

这是虚拟根目录。如果您的站点托管为virtual application in IIS(子应用程序),则它将确保它在虚拟应用程序的根目录而不是父站点的根目录中查找custom.js文件。因此,即使您的网站托管在example.com/yoursite上,~/Scripts/custom.js也会寻找example.com/yoursite/Scripts/custom.js而不是example.com/Scripts/custom.js

@Scripts.Render("~/Scripts/custom.js")

这会在<script src="~/Scripts/custom.js"></script>所在的位置查找文件,但只是使用Razor HTML Helper作为生成HTML标记的简写。