Javascript 在ASP.NET MVC网站中提供本地文件
假设我有一个位于C:\foo\bar.js的文件,我想将该文件包含在一个ASP.NET MVC网站中,显然,该网站托管在同一台机器上 这不起作用:Javascript 在ASP.NET MVC网站中提供本地文件,javascript,asp.net-mvc,httphandler,Javascript,Asp.net Mvc,Httphandler,假设我有一个位于C:\foo\bar.js的文件,我想将该文件包含在一个ASP.NET MVC网站中,显然,该网站托管在同一台机器上 这不起作用: <script src="C:\foo\bar.js"></script> 这也不是: <script src="file:///C:/foo/bar.js"></script> 以上两行也没有意义,因为它们将查看客户机的文件夹,而不是服务器的文件夹 那么,如何从ASP.NET MVC控制器提供此文
<script src="C:\foo\bar.js"></script>
这也不是:
<script src="file:///C:/foo/bar.js"></script>
以上两行也没有意义,因为它们将查看客户机的文件夹,而不是服务器的文件夹
那么,如何从ASP.NET MVC控制器提供此文件呢?在控制器中,我有本地物理文件路径的字符串值,即C:\foo\bar.js到视图?可能是HttpHandler的问题?注意:此解决方案假设js文件不是web应用程序的一部分。如果是,您可能应该使用Url.Content或ResolveClientUrl 您应该能够链接到脚本标记中的控制器操作Url:
<script src="/ControllerName/GetJavascriptFile"></script>
注意:此解决方案假设js文件不是web应用程序的一部分。如果是,您可能应该使用Url.Content或ResolveClientUrl 您应该能够链接到脚本标记中的控制器操作Url:
<script src="/ControllerName/GetJavascriptFile"></script>
我一直在这样做-假设您有一个名为Scripts的文件夹,它位于根目录下,与控制器、模型等并行。您将JavaScript文件存储在其中,您可以使用以下方法:
<script
src="<%=Url.Content("~/Scripts/jQuery-1.3.2.js")%>"
type="text/javascript">
</script>
分为多行以便于阅读
这是假设您的问题是如何链接到.js include文件的位置,但类似的技巧也可以应用于任何内容文件,例如插件安装程序或诸如此类的东西,就像我一直在做的那样-假设您在根目录下有一个名为Scripts的文件夹,与控制器、模型平行,等等,然后将JavaScript文件存储在其中,您可以使用:
<script
src="<%=Url.Content("~/Scripts/jQuery-1.3.2.js")%>"
type="text/javascript">
</script>
分为多行以便于阅读
这是假设您的问题是如何链接到.js include文件的位置,但类似的技巧也可以应用于任何内容文件,例如插件安装程序或诸如此类的东西为什么要绕道控制器?可能我误读了。。但听起来脚本文件不是web应用程序的一部分。否则包含脚本应该是微不足道的。这也是我得到的印象,因此+1。看起来OP是在问如何包含一个web服务器没有实际公开的文件;我要提供的文件不是web应用程序的一部分,因此不会通过web服务器公开。@Andreas:为什么要包含一个不属于web应用程序的JavaScript文件?为什么要绕道控制器?也许我看错了。。但听起来脚本文件不是web应用程序的一部分。否则包含脚本应该是微不足道的。这也是我得到的印象,因此+1。看起来OP是在问如何包含一个web服务器没有实际公开的文件;我要提供的文件不是web应用程序的一部分,因此不会通过web服务器公开。@Andreas:为什么要包含一个不属于web应用程序的JavaScript文件?问题是我要提供服务的文件不是包含该站点的虚拟目录的一部分。问题是我要提供服务的文件不是虚拟目录的一部分包含站点。仅供参考:执行此操作时可能会遇到浏览器安全问题。但是,如果你提供的网页依赖于用户磁盘上某个特定位置的文件……不,这些文件将不在用户磁盘上;我将提供的文件将位于承载站点的计算机上,但不在虚拟目录中,因此它们不会通过web服务器公开。仅供参考:执行此操作时,您可能会遇到浏览器安全问题。但是,如果你提供的网页依赖于用户磁盘上某个特定位置的文件……不,这些文件将不在用户磁盘上;我将提供的文件将在托管站点的计算机上,但不在虚拟目录中,因此它们不会通过web服务器公开。