我有一个asp.net用户控件,我用它来放入一堆HTML和Jquery逻辑,以便在多个页面上共享。这个用户控件有一些从json调用加载的下拉框,没有添加代码隐藏逻辑。
当我在普通页面上使用此用户控件时,它可以正常工作,完全没有问题。
但是,当我将usercontrol包装在div中并使用jqueryUI模式对话框时,usercontrol中的所有内容都会触发两次。不仅是初始$(document).ready(function(){});中的代码,而且每个函数在被调用时也会被触发两次。
在Visual Studio中对此进行调试,我发现首先从外部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:”函数,问题仍然存在。但是,如果删除整个对话框,它会发生不,因此它特定于此对话框调用。
答案 0 :(得分:1)
查看用户控件上编写的java-script / jQuery是否每次都会在着陆页上加载。
并且您的目标网页上会有相同javascript / jQuery代码的多个副本。
如果您将加载多个用户控件,则会激活多个脚本。
将会加载用户控件的次数。
要在登录页面上克服这个地方的jQuery调用。
在加载时将jQuery与用户控件绑定。
编辑1
我知道你只有一个用户控件实例。
我的观点是
我认为这是问题。
答案 1 :(得分:0)
我能够确定发生了什么。
外部JavaScript文件的链接位于用户控件本身内。将此链接移出用户控件并进入主页面修复它。
无论出于何种原因,这都会阻止生成动态脚本块文件,因此,也停止了两次调用每个函数。
我只需要记住将此JavaScript链接添加到使用此用户控件的每个页面,或将其添加到我的母版页。
如果有人理解为什么会这样,我很想知道。