2

我创建了一个 Asp.Net MVC Internet 应用程序,在 Home Controller 的索引视图中我有这个

This is the first line, before the script results.

<script type="text/javascript" src="~/Script/Teste.js"></script>
<br />

This line comes after the script.

在我的 Teste.js 我有这个:

document.write("Yes! I am now a JavaScript coder!");

但什么也没有发生。如果我更改 src 属性并输入一些随机名称 src="aaaa",尽管事实上“aaaa”不存在,但我在运行时不会出错。

4

4 回答 4

3

编辑

另外,再次检查您的路径。VS 中的默认 MVC 模板会创建一个名为 的文件夹Scripts,而不是Script. (" ~/Scripts/teste.js")

根据下面的评论,这不是问题的根本原因,但在其他情况下很容易咬新的 JavaScript 开发人员。

最有可能的是,您的 document.write 函数在文档准备好之前被触发,导致看起来什么都没有发生。在您的 Teste.js 文件中尝试以下操作

window.onload = function ()
{
   document.write("Yes! I am now a JavaScript coder!");
   //or even better as a test
   alert("This alert was called");
}

还要检查页面的来源,它可能是正在写入的文档,由于标记/页面样式,您只是看不到它。

至于您的第二个问题,如果您引用不存在的文件,则不会引发“运行时异常”。如果您使用 Firebug 或 Chrome 的开发者工具等工具,您应该会看到一个http://siteDomain/Scripts/aaaa.js响应为 404 的请求,未找到。

于 2013-04-15T22:31:48.853 回答
0

您通常应该避免使用 document.write() ,除非您出于某种原因绝对必须使用它...我认为我从未遇到过这种情况,并且编写了很多 Javascript。

尝试这个:

1)把它放在你的HTML中:

<script src="/scripts/teste.js"></script>

2)把这个放在你的JS中:

alert('Yes! I am now a JavaScript coder!');

3)打开Chrome,因为它可以轻松查找外部资源加载并打开开发者工具中的网络选项卡(单击右上角的菜单按钮,工具>开发者工具,网络选项卡)。

4) 运行您的项目并将 URL 复制/粘贴到出现在此 Chrome 窗口中的浏览器中,然后按 Enter。

当您的页面加载时,会发生以下两种情况之一:

A)你会得到你想要的警报框或

B) 你会发现为什么它没有加载,因为网络选项卡将显示浏览器尝试获取 teste.js 并以某种方式失败,例如 404,这表明你在路径中有错字,或者脚本不在您认为的位置,等等。

于 2013-04-15T22:38:52.907 回答
0

将以下行放在文档的最后。后面不应该有什么。然后尝试加载页面。

<script type="text/javascript" src="~/Script/Teste.js"></script>

此外,在页面加载后尝试按 F12 以查看源代码。检查您的脚本是否存在。

于 2013-04-15T22:40:05.530 回答
0

在 MVC 中,波浪号用于引用应用程序的根 URL。但是,它通常无法解析此信息。如果你写:

<script src="~/Script/Teste.js"></script>

查找将失败,因为这~在 HTML 中没有什么特别之处。如果您使用 Razor 作为视图引擎(而不是 ASPX),则需要Url.Content像这样包装该调用:

<script src="@Url.Content(~/Script/Teste.js)"></script>

这样做将确保向浏览器提供有效的 URL。

考虑到这一点,您需要检查文件名和文件夹名是否正确。您还需要确保该文件与您的应用程序一起部署。您可以在解决方案资源管理器中选择文件并按 时打开属性面板来执行此操作F4

于 2013-04-15T22:46:14.730 回答