我最近向我们的 ASP.NET MVC Web 应用程序添加了一项功能。当用户单击表中的项目时,会显示一个页面。div
该页面使用 AJAX在页面的 HTML中以单个方式显示部分视图。局部视图使用 Telerik Kendo UI 来定义和显示对话框和DropDownList
控件。这很复杂,因为 JavaScript 导入都在View
页面上,而PartialView
只是构建要在div
.
我在页面上编写的 JavaScript 包含一个jQuery document.ready
事件处理程序:
$(document).ready(
function () {
if ( $('#details-map').val() != '' )
$('#details-map').remove();
var urlTail = '?t=' + (new Date().getTime());
// Make the AJAX call and load the result into the details box.
$('#detailsbox').load('<%= Url.Action("Details") %>' + '/' + '<%: Model.Id %>' + urlTail, displayDetails);
}
)
当我在本地主机上运行应用程序时,这工作正常。当我将页面部署到我们的开发服务器时出现问题。document.ready
在这种情况下, Telerik Kendo / ASP.net MVC 扩展会在页面的最末端发出一个额外的事件处理程序:
<script type="text/javascript">
//<![CDATA[
jQuery(document).ready(function(){
if(!jQuery.telerik) jQuery.telerik = {};
jQuery.telerik.cultureInfo=...;
});
//]]>
</script>
在这个页面上,$(document).ready
我编写的事件处理程序在 Telerik 处理程序之前运行,我的代码显然依赖于首先运行的 Telerik 处理程序。当我的第一次运行时,我收到一个 JavaScript 错误,上面写着“jQuery.telerik.load 不是函数”。
由于这不会发生在我的本地主机上,我如何确保首先运行第二个文档就绪事件处理程序?
编辑:
经过更多研究,我发现问题在于我的答案中提到的两个脚本,它们应该通过我的页面使用的母版页中的以下行写入页面:
<%= Html.Telerik().ScriptRegistrar().Globalization(true).jQuery(false).DefaultGroup(group => group.Combined(false).Compress(false)) %>
没有被加载。换句话说,上面的行什么都不做。不过,它适用于使用相同母版页的另一个页面。我已经在该行上放置了一个断点并且它正在执行。有没有人有任何想法?