[英]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.