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



我有我的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>

是否有一些不同的关于区域文件夹下的文件,阻止脚本?

在另一个Stack Overflow问题中找到了答案,并对其进行了调整。

修改/web/区域/AreaName/视图。配置文件,使web服务器能够服务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文件,禁止服务其他文件

你试过吗

ResolveUrl(

代替

Url.Content( 

?

斯特凡诺

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

为什么把脚本放在区域部分?我有一个mvc网站与一个区域,以及,但我仍然保持我的脚本在脚本文件夹。

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