2

我正在从母版页加载 Jquery 模型中的 aspx 页面,页面在弹出窗口中加载正常。但弹出不会触发任何服务器端事件。

母版页代码

<div id="Exceptionsdialog"></div>  


function OpenExceptions() {
    $('#Equipmentdialog').load('Popups/Test1.aspx', function () {
       $(this).dialog({
            modal: true,
            width: 900,
            height: 400
        });
    });
}

但是没有一个服务器方法被触发,或者当我提交页面或任何按钮单击事件时收到错误消息,指出找不到资源。

<Page Language="C#" AutoEventWireup="false"  CodeBehind="Exceptions.aspx.cs" Inherits="LabSafe.Web.Popups.Exceptions" />
<head runat="server">
<title></title>
<script type="text/javascript">
    function OpenJquerypopup() {
        alert("Hello");
    }
</script>
<form id="form1" runat="server">
    <div id="div_assetSearchBar">
        <asp:Button runat="server"  id="btn_ViewExceptions" Text="View Exceptions"  OnClick="btn_ViewExceptions_Click" />
    </div>

截屏

4

1 回答 1

0

jQuery modals 是通过克隆 DOM 元素并将它们放置在 body 标记处来创建的。这会创建有效的 DOM 元素,并且在客户端可以正常工作。

然而,asp.net 控件要发送事件,它们必须在表单标签内(asp.net 只创建一个表单标签)。

解决方案是创建对话框,然后将元素放回表单标签中。

function OpenExceptions() {
    $('#Equipmentdialog').load('Popups/Test1.aspx', function () {
       $(this).dialog({
            modal: true,
            width: 900,
            height: 400
        });
       $('#Equipmentdialog').parent().appendTo(jQuery("form:first"));
    });
}

您的服务器事件现在应该可以完美触发。

于 2012-08-17T20:50:59.707 回答