我有一个asp.net用户控件,用于将一堆HTML逻辑放入其中,以便在几个页面上共享。这个用户控件有一些从json调用中加载的下拉框,并且没有添加的代码背后逻辑。
当我在普通页面上使用这个用户控件时,它工作得非常好,而且完全没有问题。
但是,当我将用户控件包装在div中并使用jqueryUI模式对话框时,usercontrol中的所有内容都会触发两次。不仅在初始$(文档).ready(函数(){})中的代码,而且每个函数在调用时也会被触发两次。
在Visual中对此进行调试后,我发现所有东西都是首先从外部JS文件调用的,然后是从一个“脚本块”文件中再次调用的,该文件正在以某种方式动态生成。
这个脚本块文件不会在一个没有用模式包装用户控件的页面上生成。
如果我使用IISExpress或IIS7,也会发生同样的情况。
问题是,为什么要创建这个脚本块文件,为什么我的所有jQuery逻辑都会触发两次?
-编辑--
以下是div:
<div id="divMyDiv" title="MyDiv">
<uc1:MyUserControl runat="server" ID="MyUsercontrol" />
</div>下面是使用它的模态逻辑:
$("#divMyDiv").dialog({
autoOpen: false,
height: 400,
width: 400,
modal: true,
open: function (type, data) {
$(this).parent().appendTo("form");
}
});注意:即使我删除了"open:“函数,问题仍然会发生。但是,如果我移除整个对话框块,则会发生而不是,因此它是特定于此对话框调用的。
发布于 2012-11-18 07:31:52
我能确定到底是怎么回事。
指向外部JavaScript文件的链接位于用户控件本身中。将此链接移出用户控件并进入主页修复。
无论出于什么原因,这都阻止了动态脚本块文件的生成,因此也停止了对每个函数的两次调用。
我只需要记住将这个JavaScript链接添加到每个使用这个用户控件的页面,或者添加到我的母版页中。
如果有人知道为什么会这样,我很想知道。
发布于 2012-11-18 04:57:27
查看写在用户控件上的/jQuery是否会在每次登陆页面上加载。
并将有多个副本相同的javascript/jQuery代码在您的登陆页面。
如果您将加载多个用户控件,那么脚本将被触发不止一个。
它将在加载用户控件的时间内被触发。
为了克服这个地方,登陆页面上的jQuery调用。
在加载时,将您的jQuery与用户控件绑定。
编辑1
我知道您只有一个用户控件实例。
我的观点是
我想这就是问题所在。
https://stackoverflow.com/questions/13437538
复制相似问题