2012-02-27 42 views
17

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

我曾尝试:

<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> 

,但似乎没有任何工作,萤火总是说在这一点不像我指定的那些地方找不到404文件。 (有时它增加了路径中的额外视图:-s)

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

谢谢。

回答

15

web.config文件在/浏览文件夹的所有限制默认访问文件夹中的文件:

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

您可以更改该设置,但它可能更安全o以保证不将资产存储在视图文件夹中。

+0

hm ...是的,修改web.config的特定行为似乎是一个愚蠢的事情..我只会把这个js文件与我的js文件的其余部分..非常感谢。 – LocustHorde 2012-02-27 17:02:15

+8

请参阅http://stackoverflow.com/questions/604883/where-to-put-view-specific-javascript-files-in-an-asp-net-mvc-application关于如何明确允许只有js文件从Views文件夹中提供。 – slolife 2013-04-25 17:47:54

0

最好的办法是使用T4MVC - http://mvccontrib.codeplex.com/wikipage?title=T4MVC 无需使用魔法串...

+0

是的,我已经有了,但麻烦的是,我的js文件是不是在''scripts''或''content''文件夹,而是在视图文件夹本身内,并且我没有任何东西可以获取该文件。 – LocustHorde 2012-02-27 16:50:35

+0

您可以更改T4MVC附带的T4设置文件,以包含脚本和内容以外的文件夹。 – 2012-02-27 17:27:48

+0

我明白了......但即便如此,正如[pjumbl的答案](http://stackoverflow.com/a/9468864/435867)中所述,它仍然无法访问!谢谢你。 – LocustHorde 2012-02-27 18:08:27

2

你可以使用一个UrlHelper

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

嗨,我给了这个去,但它仍然是作为404 ..我试图查看视图源上的解决路径,它看起来是正确的..所以可能[pjumble的回答](http:// stackoverflow。 com/a/9468864/435867)是正确的:( – LocustHorde 2012-02-27 17:01:09

0

添加这下您的看法web.config文件处理程序部分

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