我有我的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文件夹。