簡體   English   中英

在PlaceHolder ASP.NET中替換用戶控件

[英]Replace User Control Inside PlaceHolder ASP.NET

好的,我已經在這個主題上搜索了幾個小時,看起來似乎沒有什么解決方案甚至是相同的問題。

我有一個帶兩個內容區域的aspx頁面:一個菜單和一個“ MainContent”區域,其中包含一個UpdatePanel和一個PlaceHolder。 目前,我可以單擊菜單圖標,它將把不同的ascx頁面換成“ MainContent”部分,而沒有回發-完美。

問題出在我嘗試從其中一個頁面訪問另一個頁面時。 示例:“列表”頁面顯示數據行的列表,其中每一行都有兩個圖標:“查看”和“編輯”。 單擊查看會彈出一個模態彈出窗口,顯示該項目的完整數據。 單擊“編輯”會將您帶到該項目的“編輯”頁面(ascx)。

所以這是一個問題:當我在該行(位於UpdatePanel的“ MainContent”區域內)上單擊“編輯”時,如何獲取它來加載“編輯”頁面? 還是我只是完全以錯誤的方式來做這件事。

更清晰的示例:假設左側菜單包含3個項目:Talking Points,People和Map。 單擊“人物”,右側的“ MainContent”區域將加載一個控件,該控件顯示“人物”條目的列表,每個條目均包含與之相關的信息的一部分。 每個人員條目旁邊是一個編輯按鈕。 此“編輯”按鈕應卸載“ MainContent”區域中的“人”控件,並將其替換為“ EditPerson”控件。 請注意,頁面上有N個“編輯”按鈕,它們是每個“人”條目的一部分,因此不能將它們放置在“人”控件之外。

在site.master頁面上創建這些占位符/區域,並使所有其他頁面都可以從master頁面繼承。 這樣,您將在所有后續后續頁面中獲得內容占位符。 如果這還不足以幫助您入門,請給我一個示例。

的Site.Master

 <asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <div >
            <your menu>
        </div>

        <div>
            <asp:ContentPlaceHolder  runat="server" ID="**MainContent**" />   
        </div>
    </ContentTemplate>

創建默認頁面,編輯頁面以及任何其他要從site.master繼承的頁面

此“ MainContent”是您在所有這些頁面中的內容占位符。 將您的內容放入其中

<asp:Content runat="server" ContentPlaceHolderID="**MainContent**">


</asp:Content>

希望這可以幫助

我找到了解決方案! 關於用戶控制事件的本教程對我有很大幫助: http : //asp.net-tutorials.com/user-controls/events/

基本上,我所做的只是在占位符和“視圖/編輯”控件之間添加一個圖層,用於處理事件和每個事件的加載。

基本上看起來像這樣:

<%@ Register TagPrefix="uc" TagName="ViewMyControl" Src="stuff/ViewMy.ascx" %>
<%@ Register TagPrefix="uc" TagName="EditMyControl" Src="stuff/EditMy.ascx" %>

<asp:ScriptManagerProxy //stuff />
<asp:UpdatePanel //updatepanel stuff >
    <ContentTemplate>
        <uc:ViewMyControl runat="server" ID="ViewMyUserControl" OnEditItemClicked="ViewMyUserControl_EditItemClicked" Visible="true" />
        <uc:EditMyControl runat="server" ID="EditMyUserControl" OnSaveEditClicked="EditMyUserControl_SaveEditClicked" Visible="false" />
    </ContentTemplate>
    <Triggers> </Triggers>
</asp:UpdatePanel>

然后只需按照教程中所述添加適當的事件觸發/處理方法。

重申一下:當您單擊相應的Menu項時,母版頁中的Placeholder控件現在將加載此“ Manage” ascx控件,而不是直接轉到View控件或Edit控件,並且Manage控件現在可以處理加載/卸載查看和編輯控件以及它們各自的事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM