ASP.Net MVC3:将.js文件放在View而不是Scripts文件夹附近

时间:2012-02-21 01:18:03

标签: javascript asp.net-mvc

我们想从我们的Razor视图中分离出javascript(所以我们可以测试)。我们可以在它们对应的视图附近找到.js文件,而不是在Scripts文件夹中吗?例如,我们希望在解决方案资源管理器中看到这一点:

MyMvcProject
    - Views
      - Home
        - About.cshtml
        - About.js

但是,我不知道从.cshtml视图引用.js文件。

3 个答案:

答案 0 :(得分:9)

出于安全原因,asp.net-mvc阻止从URL访问/ Views文件夹的所有文件。这可以解决,但我建议不要出于安全原因这样做。

您通常应该将脚本保留在Scripts文件夹中,特别是系统范围内的脚本,例如jquery和不显眼的内容。这是因为随着新版本或错误修正的发布,它们可以通过NuGet更容易地更新。

我不确定为什么您在测试时遇到问题并将其保留在默认位置。

答案 1 :(得分:3)

打开 Views / Web.config 并替换此

<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />

用这个

<add name="ExcludeRazorViews" path="*.cshtml" verb="*" type="System.Web.HttpNotFoundHandler" />

答案 2 :(得分:1)

如果您谈论将“自定义”脚本从视图中删除并将它们放在单独的文件夹中以便测试您的javascript,那么您可以将它们放在您选择的文件夹中。

但是,我不建议将它们并排放置在您的视图中...这将导致混乱的项目结构,如果您想要最小化您的JavaScript,将会更加困难。

我通常在Scripts文件夹中保留“框架”javascript文件,原因是Mystere Man在答案中提到的原因,但是我已经在/Content/js/内添加了“自定义”或查看相关的javascript文件。

要引用它们,您只需在视图或母版页(布局)中添加引用:

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