Asp.net 动态加载的模式,可以提交到与主页不同的url

Asp.net 动态加载的模式,可以提交到与主页不同的url,asp.net,webforms,updatepanel,modal-dialog,jquery-ui-dialog,Asp.net,Webforms,Updatepanel,Modal Dialog,Jquery Ui Dialog,我有一个testMain.aspx页面,显示一个可编辑的listview。此外,它还包含一个触发jquery UI模态对话框的按钮,该对话框动态加载testModal.aspx。此模式包含一个下拉列表,用户选择该列表并单击按钮以提交回服务器。我希望模态提交到testModal.aspx,然后关闭,因此我正在查看testMain.aspx 我遇到的问题是在提交并关闭modal之后,单击ie.linkbuttons编辑listview现在提交到modal.aspx而不是main.aspx 值得注意的

我有一个testMain.aspx页面,显示一个可编辑的listview。此外,它还包含一个触发jquery UI模态对话框的按钮,该对话框动态加载testModal.aspx。此模式包含一个下拉列表,用户选择该列表并单击按钮以提交回服务器。我希望模态提交到testModal.aspx,然后关闭,因此我正在查看testMain.aspx

我遇到的问题是在提交并关闭modal之后,单击ie.linkbuttons编辑listview现在提交到modal.aspx而不是main.aspx

值得注意的是:

testMain.aspx使用包含表单元素的母版页 listview包含在asp:updatepanel中 这个问题直到我加载时才出现。加载模式之前,我按预期点击返回testMain.aspx 母版页

testMain.aspx

testModal.aspx

在我看来,通过在jquery对话框上调用.load,它会对updatepanel即.postback路径造成严重破坏。如何在模式中加载整个.net页面,在所述模式中单击一个按钮,异步发回服务器,并允许我在模式解除后继续在主页中工作


这可能吗?有更好的办法吗

在aspx文件中只能有一个表单runat=server。
使您能够在iframe中加载模态,这将解决一个问题。假设它已经没有像那样加载它

您还可以发布testModal.aspx代码吗?添加了testModal.aspx标记。注意:代码隐藏中没有任何内容。testModal.aspx中有一个表单元素。testMain.aspx是否也有该表单元素?有使用的母版页吗?我想知道您是否在呈现的页面中多次使用了该表单元素,这会导致问题。@Gromer TestMain.aspx没有表单元素;但是,它使用的母版页确实包含表单元素。所以,是的,我最终得到了两个表单元素。@Gromer:我在其中有表单,这样我就可以用gridview、datasource等构建我的aspx页面,并将其简单地显示为一个模式。如果没有表单,我将无法使用asp.net控件。经过多次尝试和错误后,IFrame是我能够满足需要的唯一选项。
<%@ Master Language="VB" CodeFile="MasterPage.master.vb" Inherits="MasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head id="Head1" runat="server">
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <div id="page">
        <form id="form1" runat="server">
        <table summary="" class="pageTable">
            <tr>
                <td class="contentArea">
                    <asp:ContentPlaceHolder ID="ContentPage" runat="server">
                    </asp:ContentPlaceHolder>
                </td>
            </tr>
        </table>
        </form>
    </div>
</body>
</html>
<script type="text/javascript">
    $(document).ready(function () {
        var $dialog = $('#foo').dialog({
            autoOpen: false,
            modal: true
        });

        $("#foo").parent().appendTo($("form:first"));

        $('#fooBtn').click(function () {
            $dialog.load('testModal.aspx');
            $dialog.dialog('open');
            return false;
        });
    });
</script>

<ajax:UpdatePanel runat="server" ID="updPanelGrid" UpdateMode="Conditional" RenderMode="Inline"
    ChildrenAsTriggers="false">
    <ContentTemplate>
        <asp:ListView ID="ListView1" runat="server" EnableModelValidation="True"
         ...
        </asp:ListView>
    </ContentTemplate>
    <Triggers>
        <ajax:AsyncPostBackTrigger ControlID="listview1" EventName="ItemEditing" />
        <ajax:AsyncPostBackTrigger ControlID="listview1" EventName="ItemDeleting" />
        <ajax:AsyncPostBackTrigger ControlID="listview1" EventName="ItemCanceling" />
        <ajax:AsyncPostBackTrigger ControlID="listview1" EventName="ItemUpdating" />
        <ajax:AsyncPostBackTrigger ControlID="listview1" EventName="ItemInserting" />
    </Triggers>
</ajax:UpdatePanel>
<form id="form1" runat="server">
<asp:ToolkitScriptManager ID="ToolkitScriptManager2" runat="server">
</asp:ToolkitScriptManager>
<div>
    <ajax:UpdatePanel ID="updPnl" runat="server">
        <ContentTemplate>
            <asp:LinkButton ID="btnModalSubmit" runat="server" Text="Modal Server Submit" />
            <div>
                The current time is:
                <%= Now.ToString%></div>
        </ContentTemplate>

    </ajax:UpdatePanel>
</div>
</form>