2012-02-10 49 views
0

你好如何可以裝入Web表單內的一個網頁形式DIV/負載的web表單320交織的div

SO我有開口的主頁內web表單「帳戶」。

在我的帳戶Web窗體我有我想要的菜單,當用戶點擊它加載帳戶頁面內的另一個Web窗體。

我正在使用ASP.NET C#。

對不起我的壞英文。

感謝

+0

你可能想看看在iFrame中打開你的第二頁/表單。當您點擊菜單中的選項時,這可以通過JavaScript觸發。 – Zachary 2012-02-10 17:31:59

+0

也有嵌套母版頁的替代方案。您可以擁有accountMaster,其他頁面使用accountmaster作爲主頁面 – peroija 2012-02-10 17:45:34

回答

2

如果你想通過加載用戶控件的實例到您的形式與實際的頁面做這個服務器端可以完成此。 Click here to see an MSDN example並確保使用更新面板來管理帖子後臺。

如果你想這樣做,客戶端就可以通過AJAX做,並調用一個ASHX(處理程序文件) 要管理此客戶端:你的aspx文件中

添加以下內容:

內頭

<script type="text/javascript"> 
     $(function() { 
      $("#panel").hide(); 
     }); 
     $(document).ready(function() { 
      $(".slide").click(function() { 
       $("#panel").show("slow", false); 

       jQuery.ajax({ 
        type: "POST", 
        url: "controlloader.ashx", 
        dataType: "html", 
        success: function (response) { 
         jQuery('#loadcontrol1').append(response); 
        }, 
        error: function() { 
         jQuery('#loadcontrol1').append('error'); 
        } 
       }); 

      }); 

     }); 
</script> 

再內主體

<body> 
    <form id="form1" runat="server" > 
    <asp:ScriptManager ID="ScriptManager1" runat="server"> 
    </asp:ScriptManager> 
    <div> 
     <div id="panel" > 
     <p>stuff here</p> 
     </div> 
     <p><%= DateTime.Now %></p> 
     <div id="div1" class="slide"> 
      <p class="btn-slide">Expand Panel</p> 
     </div> 
     <br /> 
     <asp:Button Text="Click me" ID="clickButton" runat="server" /> 

     <div id="loadcontrol1" /> 

    </div> 
    </form> 
</body> 

那麼你的ashx文件

public class controlloader : IHttpHandler 
    { 
     //If annonymous id is turned on IRequireSessionState Interface may be needed to write session variabled such as user auth. 
     // Generic handlers by default implementIReadOnlySessionState 
     public void ProcessRequest (HttpContext context) 
     { 
      context.Response.ContentType = "text/plain"; 
      context.Response.Write(RenderPartialToString("~/Control1.ascx")); ; 
     } 

     private string RenderPartialToString(string controlname) 
     { 
      Page page = new Page(); 
      Control control = page.LoadControl(controlname); 
      page.Controls.Add(control); 

      StringWriter writer = new StringWriter(); 
      HttpContext.Current.Server.Execute(page, writer, false); 

      return writer.ToString(); 
     } 

     public bool IsReusable 
     { 
      get 
      { 
       return false; 
      } 
     } 
    } 

內您還需要創建用戶控制文件,但我會留給代碼給你。 在這個例子中發生了一些事情。該按鈕用於檢測後備,以確保控制不會重新加載。我還添加了一個你不需要的動畫,但是這是一段時間以前的概念驗證片,所以你可以忽略那些代碼。

我知道你提到的母版頁的用戶,因此您將很可能想的JavaScript分解出到一個js文件,然後確保在使用腳本管理器來加載它:

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
     <Scripts> 
      <asp:ScriptReference Path="~/js/jquery-1.7.js" /> 
      <asp:ScriptReference Path="~/js/yourcontrolloader.cs" /> 
</scripts> 
</asp:ScriptManager> 

這是在使用母版頁時需要,否則由於服務器端渲染引用將會丟失,並且腳本從不會調用。您也可以在實際頁面與主頁面中使用部分引用,但這取決於您。

祝你好運