在ASP.NET MVC网站中提供本地文件

时间:2010-11-17 19:28:18

标签: 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 Controller(在控制器中,我有本地物理文件的路径的字符串值,即C:\foo\bar.js)向View提供此文件?也许有HttpHandler的东西?

2 个答案:

答案 0 :(得分:3)

注意:此解决方案假设js文件不是Web应用程序的一部分。如果是,您可能应该使用Url.Content或ResolveClientUrl ..

您应该能够在脚本代码中链接到控制器操作Url:

<script src="/ControllerName/GetJavascriptFile"></script>

......并采取类似::

的行动
public ActionResult GetJavascriptFile() {
   string mp = @"C:\foo\bar.js";
   return File(mp, "text/javascript");
}

http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.file(VS.90).aspx

答案 1 :(得分:1)

我一直这样做的方式是 - 假设您有一个名为Scripts的文件夹离开根(因此,与ControllersModels并行等)并且您将JavaScript文件存储在其中,您可以使用:

<script 
 src="<%=Url.Content("~/Scripts/jQuery-1.3.2.js")%>" 
 type="text/javascript">
</script>

(分成多行以便于阅读)

这假设您的问题是如何链接到.js包含文件的位置,但类似的技巧可以应用于任何内容文件(即插件安装程序或诸如此类)