子目录中的javascript文件未加载

Mis*_*siu 0 javascript asp.net-mvc iis-7.5 asp.net-mvc-4

我构建了一个使用ExtJS的简单ASP MVC4应用程序.

我的主视图链接到我的主employee.js文件:

<script src="app/employee.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

我将我的应用程序发布到本地网络中的服务器.在我的开发机器上,当我访问url http:\\local-iis\holidays应用程序时正确加载并显示.
但是在同一网络中的另外3台计算机上我收到错误,因为浏览器无法找到该js文件.

我的项目结构如下:

--holidays (project name)
  +--app
     +--myapp.js
  +--Controllers
  +--Models
  +--(rest of ASP folders)

在我的开发机器上,当我访问http:\\local-iis\holidayschrome并且我检查源代码时,我看到了行:

<script src="app/employee.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

在我滚动该条目之后

在此输入图像描述

我看到了正确的道路:

http:\\local-iis\holidays\app\employee.js  (I translated urlopy to holidays)
Run Code Online (Sandbox Code Playgroud)

在其他计算机上删除相同页面的源目录名称(holidays)

我尝试清除缓存,安装其他浏览器,切换到其他计算机,但一切都失败了 - 在某些计算机上这是有效的,有些则不然.

我不是要求具体的解决方案,而是要开始使用的东西.

这是我在MVC 4中的第一个项目,我不知道如何配置我的应用程序以使这些网址正常工作.

我不知道为什么我的应用程序正在删除该目录名称(它指的是我的local-iis服务器的root)

我问ExtJS论坛,他们说这可能是IIS或ASP设置问题.

Dar*_*rov 6

永远不要在ASP.NET MVC应用程序中硬编码URL:

<script src="app/myapp.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

只需使用助手:

<script src="~/app/myapp.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

无论您的应用程序托管在何处,~/app/myapp.js都将正确地通过Url.Content帮助程序,而帮助程序将生成正确的URL.例如,如果您的应用程序在IIS Express中本地托管,它可能如下所示:

<script src="/app/myapp.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

当部署在IIS中的虚拟目录中时,它可能如下所示:

<script src="/holidays/app/myapp.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

帮助者会照顾它.

在Razor v1.0(ASP.NET MVC 3)中,您必须明确使用帮助程序:

<script src="@Url.Content("~/app/myapp.js")" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下,您可以将应用程序的基本根 url 传递给您的 javascript 文件。应该在服务器上计算。例如,您可以有一个全局 javascript 变量:`&lt;script type="text/javascript"&gt;var basePath = '@Url.Content("~/")';&lt;/script&gt;;`,然后您可以在您的脚本。不要寻找奇迹,根本不存在。如果您希望 ASP.NET MVC 应用程序正常工作,则永远不应该对 url 进行硬编码,并且始终在 ASP.NET MVC 应用程序中使用 url 帮助程序。每次对 URL 进行硬编码时,它都会崩溃。 (2认同)