我有一个 asp.net 用户控件,我用它来将一堆 HTML 和 Jquery 逻辑放入以在多个页面上共享。这个用户控件有一些从 json 调用加载的下拉框,并且没有添加代码隐藏逻辑。
当我在普通页面上使用此用户控件时,它工作得非常好,完全没有问题。
但是,当我将用户控件包装在 div 中并使用 jqueryUI 模式对话框时,用户控件中的所有内容都会触发两次。不仅是初始 $(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:”功能,问题仍然存在。但是,如果我删除整个对话框块,它就不会发生,所以它是特定于这个对话框调用的。