2012-09-06 14 views
1

我有一个“testMain.aspx”页面显示一个可编辑的列表视图。另外,它包含一个触发jquery UI模式对话框的按钮,该对话框动态地加载“testModal.aspx”。这种模式包含用户选择的下拉列表,并单击按钮将其提交回服务器。我想要模式提交(到testModal.aspx),然后关闭,所以我正在查看testMain.aspx。动态加载的模式,可以提交到不同的网页比主页

我碰到的是提交&密切模式之后的问题,任何点击(即了LinkBut​​ton编辑列表视图)现在提交modal.aspx而非main.aspx。

注:

  • testMain.aspx使用母版(其包含的表格元素)
  • ListView中被包含在一个asp:UpdatePanel的
  • 该问题不会发生,直到我加载(.load())的模式,在此之前,我点击回发到testMain.aspx(预期)

Masterpa ge.master

<%@ 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> 

testMain.aspx

<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> 

testModal.aspx

<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> 

它通过了jQuery对话框调用.load()在我看来,它会导致更新面板(即,回传路径)。如何在模态中加载整个.net页面,单击所述模式中的按钮,将其发回到服务器(异步),并且允许我在模式被解除后继续在主页面中工作?

这甚至可能吗?有没有更好的办法?

+0

你也可以发布testModal.aspx代码吗? – Gromer

+0

添加了testModal.aspx标记。注意:代码隐藏中没有任何内容。 – SchickRaptor

+0

您的testModal.aspx中有一个表单元素。 testMain.aspx是否也有该表单元素?任何主页正在使用?我想知道如果您在呈现的页面中多次使用该表单元素,并且这会导致问题。 – Gromer

回答

0

在aspx文件中只能有一个Form runat = server。 使你的模态加载到iframe中,这应该可以解决问题。 (假设它已经不像这样加载)

+0

经过大量的试验和错误,IFrame是我可以满足我需求的唯一选择。 – SchickRaptor