Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 我可以在MVC区域内部署javascript文件吗?_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 我可以在MVC区域内部署javascript文件吗?

Asp.net mvc 我可以在MVC区域内部署javascript文件吗?,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我的js文件位于区域内,无法访问它们。当我将它们移到MVC区域之外时,我可以访问它们 我尝试了以下方法: js文件的不同命名-无法解决问题 检查它们是否存在于服务器上—确实存在 直接从服务器上的IIS管理器中访问文件-它们不会打开并返回not found 直接从服务器上的IIS管理器中访问相同的文件,但当文件位于脚本目录中时,它们会在浏览器中打开 使用路由检查器-当我尝试访问该文件时,它不会打开路由调试,而是说“404” 这项工作: <script src="@Url.Content(

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

我尝试了以下方法:

  • js文件的不同命名-无法解决问题
  • 检查它们是否存在于服务器上—确实存在
  • 直接从服务器上的IIS管理器中访问文件-它们不会打开并返回not found
  • 直接从服务器上的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>

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

您试过了吗

ResolveUrl(
而不是

Url.Content( 
?

斯特凡诺


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

为什么要将脚本放在区域部分?我有一个mvc站点,也有一个区域,但我仍然将脚本保存在scripts文件夹中

我的建议是重新思考你组织内容的原因,并考虑把所有的外部.js文件移到脚本文件夹。

< p>找到一个答案并调整它的区域。

修改/Areas/AreaName/Views/web.config文件以使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文件,并禁止提供任何其他文件。

为什么在文件名中使用下划线?我的惯例。不过,我可能会改变这一点。不管怎样,我注意到我仍然有同样的问题。部署时,我的应用程序不喜欢区域中的脚本。但是,在dev服务器上本地运行是可以的。@SamanthaJ@Url.Content()在客户端呈现什么?也许你的问题就在那里。第二个应该有用,它在MVC3中对我有用。我在管理区域中也有与管理相关的脚本(这样普通用户就不能偷看它们)。最可能的情况是,您的路径错误,应该查看生成的内容(参见上面的shuniar评论),以及如果您在浏览器中手动键入URL,是否可以访问所述文件。请原谅我几个月后的评论,但我会留下它,以防将来有人试图这样做。我现在就试试。代码正在Azure上运行,因此需要15分钟才能上载。检查文档我不确定它是否会有帮助,因为它说:如果relativeUrl参数包含一个绝对URL,则返回的URL将保持不变。如果relativeUrl参数包含相对URL,则该URL将更改为适用于当前请求路径的相对URL,因此,浏览器可以解析URL。我至少可以想到一个原因-阻止没有管理权限的用户阅读管理面板脚本,这可能会让他们了解那里发生了什么(路径、功能等)。实际上,我来这里是想了解在MVC区域中存储脚本的信息……区域是功能的逻辑分组,所以撇开实现问题不谈,为什么不想将特定于区域的脚本放在区域文件夹中?在我看来,这似乎是常识。如果您的体系结构遵循使用自主业务组件的SOA风格,那么这会带来很多好处。在同一文件夹中查看特定于页面的JavaScript文件非常方便。为什么这会被否决这么多?将特定于区域的脚本保存在areas文件夹中有什么问题吗?我将这些更改添加到位于/areas/arename/web.config中的web.config中,它也可以工作。