2013-04-11 540 views
3

我有一个ASP .Net MVC4 Web应用程序。其中我有我的通常的HTML为_Layout.cshtml,它依次加载默认的主页/索引。一切正常。0x800a1391 - JavaScript运行时错误:'jQuery'未定义

在我的索引中,我也加载了部分视图。这工作也很好。没有问题。

我使用从以下网站的UI工具:

http://www.keenthemes.com/preview/index.php?theme=metronic

问题是,它似乎是主要HTML4而不是MVC设计开箱即用,所以我不得不调整它稍微让它按我想要的方式工作。 (除了非常基本的东西之外没有什么)例如,将一部分移动到索引并使用Renderbody()加载它,以便实际的html结构永远不会改变。我做了这一百万次,以确保我不会错过任何可能导致我的问题的结束标签或其他任何内容。

到目前为止,根本没有问题。一切都按照它应该加载。

我继续创建第二个视图,并部分提取网站的其他部分。像往常一样,宝宝首先步骤。在提取任何其他代码之前,我只是在第一页中使用了一个“Hello World”,并在部分中使用了一个类似的字符串,以确保它可以正常工作。它是。

现在,当我输入url Home/ActionName时,整个事情都会重新加载,但看起来很可怕。我得到这个错误信息:

0x800a1391 - JavaScript的运行时错误:“jQuery的”未定义

下面是我的代码能清晰地定义它:

<!-- BEGIN CORE PLUGINS --> 
<script src="assets/plugins/jquery-1.8.3.min.js" type="text/javascript"></script> 
<script> 
    jQuery(document).ready(function() 
    { 
     App.init(); // initlayout and core plugins 
     _Layout.init(); 
     _Layout.initJQVMAP(); // init index page's custom scripts 
     _Layout.initCalendar(); // init index page's custom scripts 
     _Layout.initCharts(); // init index page's custom scripts 
     _Layout.initChat(); 
     _Layout.initDashboardDaterange(); //Red date range 
     _Layout.initIntro(); //Pop up messages 
    }); 
</script> 

这点我对jQuery(文档)。当我看到消息时已经成为了一部分。

同样,当我正常加载页面时,它工作正常。当我自己输入Home时,它工作正常。它只有当我输入Home/AnythingElse,它会给出这个错误消息。即使我输入Home /应该加载索引文件,它给了我这个错误信息。

jQuery被定义,那么为什么这是发生在回发?

任何帮助表示赞赏。

+1

'不是为MVC'设计的?我认为你需要回到ASP.Net教程页面。没有冒犯,而且我是认真的。我不像下一个人那么喜欢ASP,但是它是MVC的一个LOOOOOOOOONG时间,从我所看到的,你已经过度复杂化了。如果他们仍然有,请查看制作MVC音乐库的教程。 – SpYk3HH 2013-04-11 12:30:03

+1

你指向的jQuery文件可能不在那里,只有理由jQuery将是undefined – 2013-04-11 12:32:20

+0

没有冒犯,谢谢你的答案。你错过了我所说的“开箱即用”的东西,它只是客户端的东西,所以当然有足够的调整它将适用于MVC。但我相信从网站上的代码来看,它的所有html4/css2。当然,它可以在任何地方使用足够的代码来支持兼容性,但是我在一年前完成了音乐教程,所以现在我稍微超出了它(尽管仍在学习)。另外,我通常喜欢asp.netnet c#和其他MS技术。谢谢。 :) – 2013-04-11 13:20:57

回答

9

尝试设置的src jQuery的是从网站的根绝:

<script src="/assets/plugins/jquery-1.8.3.min.js" type="text/javascript"></script> 

注意/以前assets - 当你的src路径不以/启动浏览器将尝试与相关资产装入当前的路径,所以在你的例子,当你添加了结尾的斜线,以Home它会尝试从Home/assets/plugins/...

+0

我现在在其他地方发生错误,但至少它不是那一个(所以如果需要,我会发表另一个问题)。谢谢你。自从我教过这些东西以来,我就忘记了浏览器的东西。 – 2013-04-11 13:26:41

+1

这里主要是为了我自己的参考,当我回顾这个时,我想补充说的是,有些情况下这还不够,在这种情况下,您还必须使用传统的MVC标准来查找主目录。即在这种情况下使用〜/资产。在使用/单独解决的初始问题时,它回来困扰着我,直到我把它放在它的前面。再次感谢您的回答(似乎基本知识每次都能获得)。 – 2013-04-15 14:05:30

1

加载的jQuery对于我来说,MVC 捆扎机是造成问题(在我案例的UI捆绑)

这是我的工作顺序。

<script src="/Scripts/modernizr-2.5.3.js"></script> 
    <script src="/Scripts/jquery-1.7.1.js"></script> 
    <script src="/bundles/jquery-ui"></script> 
    <script src="/Scripts/jquery.unobtrusive-ajax.js"></script> 
    <script src="/Scripts/jquery.validate.js"></script> 
    <script src="/Scripts/jquery.validate.unobtrusive.js"></script> 
0

您需要添加jquery-x.xx.x。js首先在validate.js这样之前

<script src="~/Scripts/jquery-1.10.2.js"></script> 
<script src="~/Scripts/jquery.validate.js"></script> 
相关问题