从ASP.NET MVC调用外部.js

时间:2009-03-02 09:12:01

标签: javascript jquery asp.net-mvc

我是JavaScript新手。我希望能够做的是从ASP.NET MVC项目的脚本文件夹中调用.js文件中的函数。

功能是:

function myfunction() {
    alert("HELLO");
}

...它位于文件brfix.js

在视图页面上我称之为:

<script src="../../Scripts/brfix.js" type="text/javascript"></script>

<script type="text/javascript">
    $(document).ready(function() {
        myfuntion();
    });
</script>

但代码不起作用。但是,如果我将js-code直接放在viewpage上,它的工作原理如下:

<script type="text/javascript">
    $(document).ready(function() {
        alert("HELLO");
    });
</script>

如何调用基于文件的js函数?一些JavaScript-Big-Kahuna可以帮助我吗? =)

5 个答案:

答案 0 :(得分:1)

如果直接从您的源代码粘贴该代码,您就会输入错误信息,这就是为什么它不起作用!

你的函数名为myfunction(),但你正在调用myfuntion()

开发时应在浏览器中启用js错误。您没有说明您正在使用哪种浏览器。对于IE,它位于工具 - 选项 - 高级。取消选中“禁用脚本调试”选项。在firefox中,我会使用像FireBug这样的东西,如Dror所说,如果内存服务有些事情会出现javascript错误。如果您仍然遇到问题,我会尝试安装Fiddler2(在IE中)并构建对js文件的请求并查看返回的内容。

另一种选择是放置一个调试器;在您调用函数之前调用,然后您应该可以单步执行javascript。

答案 1 :(得分:0)

可能是对外部文件的引用错误:

<script src="../../Scripts/brfix.js" type="text/javascript"></script>

确保参考正确无误。 您可以尝试使用视图源查看实际位置../../Scripts/brfix.js将被翻译到最后一页。
您也可以尝试使用FireBox FireFox。

答案 2 :(得分:0)

如果您的mvc站点是iis中的根站点,您可以使用斜杠启动脚本src以获取脚本。否则你可以使用asp:ScriptManager来包含脚本

答案 3 :(得分:0)

正如其他海报所提到的,有一个错字。然而...

查看Url.Content()方法以引用您的网站内容。 (图像,脚本等...)使用../ ..是不可靠的,特别是如果您的URL中有不同级别的深度,或者您的应用程序位于子目录中。

这是我在大多数项目中使用的助手,例如:

public static string Script(this HtmlHelper Html, string url)
{
    UrlHelper Url = new UrlHelper(new RequestContext(Html.ViewContext.HttpContext, Html.ViewContext.RouteData));
    string html = "<script type=\"text/javascript\" src=\"{0}\"></script>";
    return string.Format(html, Url.Content(url));
}

这里被称为:

<%= Html.Script("~/public/js/blah.js") %>

答案 4 :(得分:0)

我遇到了同样的问题,结果发现我有一些未找到的js文件。如果您的MVC项目结构是默认的VS设置,并且您的View页面在Home中,那么我认为下面将找到该文件:

<script src="../Scripts/brfix.js" type="text/javascript"></script>

但是,即使发现其中一个未找到的其他js文件导致我的$(文件)。已经无法工作。在Firefox的Firebug中检查您的页面,如果找不到文件,您将看到html标记,其中包含无法找到资源的消息,位于违规参考下方。一旦我解决了所有的js引用,然后我的$(文档).ready work。

奇怪的是VS告诉我,当引用正确时,它找不到js文件,并且在引用不正确时没有标记问题。