我可以在MVC区域内部署javascript文件吗?

时间:2011-11-09 08:31:04

标签: asp.net-mvc asp.net-mvc-3

我的js文件在区域内,我无法访问它们。当我将它们移到MVC区域之外时,我可以访问它。

我尝试了以下内容:

  • js文件的不同命名 - 无法解决问题
  • 检查服务器上是否存在 - 他们
  • 直接从服务器上的IIS管理器中访问文件 - 它们无法打开并返回未找到
  • 直接从服务器上的IIS管理器中访问相同的文件,但是当文件位于脚本目录中时 - 它们在浏览器中打开
  • 使用路由检查器 - 当我尝试访问该文件时,它不会打开路由调试,而只是说“404”

这有效:

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

这不起作用:

<script src="@Url.Content("~/Areas/Administration/Scripts/Roles/_Roles.js")" type="text/javascript"></script>

区域文件夹下阻止脚本的文件会有什么不同吗?

4 个答案:

答案 0 :(得分:1)

another Stack Overflow question中找到答案并对其进行调整。

修改/Areas/AreaName/Views/web.config文件以使网络服务器能够提供JS和CSS文件:

<system.web>
    <httpHandlers>
        <add path="*.js" verb="GET,HEAD" type="System.Web.StaticFileHandler" />
        <add path="*.css" verb="GET,HEAD" type="System.Web.StaticFileHandler" />
        <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
    </httpHandlers>
    <!-- other content here -->
</system.web>

<system.webServer>
    <handlers>
        <remove name="BlockViewHandler"/>
        <add name="JavaScript" path="*.js" verb="GET,HEAD" type="System.Web.StaticFileHandler" />
        <add name="CSS" path="*.css" verb="GET,HEAD" type="System.Web.StaticFileHandler" />
        <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
    </handlers>
    <!-- other content here -->
</system.webServer>

这将允许提供.js和.css文件,并禁止提供任何其他文件。

答案 1 :(得分:0)

你试试吗

ResolveUrl(

而不是

Url.Content( 

斯特凡诺

答案 2 :(得分:0)

<script type="text/javascript" src='<%: ResolveUrl("~/Scripts/jquery/_Roles.js") %>'>
</script>

答案 3 :(得分:-3)

为什么要将您的脚本放在Regions部分?我有一个带有区域的mvc站点,但我仍然将我的脚本保存在Scripts文件夹中。

我的建议是重新考虑您以这种方式组织内容的原因,并考虑将所有外部.js文件移至Scripts文件夹。