2008-12-23 47 views

回答

0

Master Page不負責PostBack,這就是HTML表單的用途。

阻止頁面回傳的唯一方法是將整個事件包裝到UpdatePanel中。但是,這本身是一個非常糟糕的主意!

+0

您可以添加一個解釋,爲什麼使用UpdatePanel是一個壞主意?我可以想到一些,但它可能有助於OP瞭解更多關於UpdatePanel如何工作的信息 – 2008-12-23 10:55:30

+0

我認爲這裏的問題是:提問者只想發佈內容頁面而不是主頁面。但不知道。 但我想知道如何做到這一點。 – IsmailS 2009-11-06 07:06:14

1

使用母版頁並不影響整個頁面是否回發。沒有主標準和標準的簡單ASPX頁面也會完成整個頁面回發。

雖然在各行之間進行閱讀,但我猜測您的母版頁上已經有一些UpdatePanels(可能圍繞着內容佔位符),這會阻止整個頁面在其中的內容導致回發時刷新。

無論哪種方式,防止整頁刷新(不管是否使用母版頁)的關鍵是確保導致回發的控件在UpdatePanel內部生存或使用一些JavaScript回調到服務器並處理反應異步。

2

只是澄清 - 更新面板不會阻止整頁回發或整頁生命週期。它只是導致該過程在用戶看不見的背景下完成。唯一的區別是,回發完成後,只有由更新面板聲明包裝的部分纔會刷新,從而導致只有部分頁面被回傳的錯覺。

如果觸發器控件位於updatepanel內,那麼您應該將ChildrenAsTriggers屬性設置爲True。如果觸發更新的控件位於更新面板之外,則應將觸發器部分添加到控制面板並添加一個異步觸發器。如果它是一個組合,那麼你可以將兩者結合起來以達到最佳效果。

如果觸發更新的控制都包含在更新面板內:

<asp:UpdatePanel id="MyUpdatePanel" runat="server" ChildrenAsTriggers="True"> 
    <ContentTemplate> 
    ...Stuff you want updated 
    </ContentTemplate> 
</asp:UpdatePanel> 

或者如果控制不包含在更新面板內:

<asp:UpdatePanel id="MyUpdatePanel" runat="server"> 
    <ContentTemplate> 
    ...Stuff you want updated 
    </ContentTemplate> 
    <Triggers> 
    <asp:AsyncPostBackTrigger ControlID="MyButtonControl" EventName="Click" /> 
    </Triggers> 
</asp:UpdatePanel>