MVC - 在视图文件夹中访问css,image,js文件

时间:2012-02-27 16:40:27

标签: asp.net-mvc model-view-controller

在我的mvc 3应用程序中,假设我有一个像\Views\Account\js\custom.js这样的文件夹结构如何在Account\index.cshtml中将该文件添加到我的视图中?

我试过了:

<script src="js/custom.js" type="text/javascript"></script>
<script src="/views/account/js/custom.js" type="text/javascript"></script>
<script src="~views/account/js/custom.js" type="text/javascript"></script>

但似乎没有任何效果,firebug总是说在我指定的地方找不到404文件。 (有时它会在路径中添加额外的视图:-s)

我知道我可以将它放在我自己文件夹中的视图之外并像/myFolder/myfile.js一样访问它并且它可以工作但是这个javascript文件与帐户视图中发生的事情非常密切相关,所以它将它放在那里是有意义的..

感谢。

4 个答案:

答案 0 :(得分:16)

默认情况下,/ Views文件夹中的web.config文件限制对文件夹中文件的所有访问:

<httpHandlers>
  <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>

您可以更改它,但总体上可能更安全,不将资源存储在views文件夹中。

答案 1 :(得分:2)

您可以使用UrlHelper

<script src="@Url.Content("~/view/account/js/custom.js")" type="text/javascript"></script>

答案 2 :(得分:0)

最好的方法是使用T4MVC - http://mvccontrib.codeplex.com/wikipage?title=T4MVC 不需要使用魔术弦......

答案 3 :(得分:0)

在您的视图下添加此web.config处理程序部分

<add name="JavaScriptHandler" path="*.js" verb="*" preCondition="integratedMode" type="System.Web.StaticFileHandler" />