2016-05-12 71 views
0

我正在研究AJAX網站功能,當用戶單擊某個按鈕時,頁面上的某些內容會更新。我遇到的問題是該按鈕位於特定的控件中,該控件只顯示在某些頁面上,我需要更新的一些信息位於Site.master文件中。這裏有一個想法發生了什麼:使用來自其他控件的單擊事件的CodeBehind更新Site.master控件

Site.master代碼我希望按鈕點擊更新。此代碼位於每個頁面的標題中,但只有某些頁面應能夠更新它。

<asp:ScriptManager ID="MainScriptManager" runat="server" /> 
    <asp:UpdatePanel ID="Panel1" runat="server"> 
     <ContentTemplate> 
     <asp:HyperLink 
      ID="Items" runat="server" 
      EnableViewState="False" 
      NavigateUrl="/Destination.aspx" 
      Text="0 items" 
      updatemode="Conditional" /> 
     </ContentTemplate> 
    </asp:UpdatePanel> 

在單獨的控件(Items.ascx)中的按鈕。這僅在特定頁面上顯示。

<asp:UpdatePanel ID="Panel1" runat="server"> 
    <Triggers> 
     <asp:AsyncPostBackTrigger controlid="UpdateItems" eventname="Click" /> 
    </Triggers> 
    <ContentTemplate> 
     <asp:Button runat="server" 
       OnClick="UpdateItems" 
       Text="Update Items" 
       class="update-items" 
       ID="UpdateItems" 
       name="UpdateItems" 
       type="submit"> 
     </asp:Button> 
    </ContentTemplate> 
</asp:UpdatePanel> 

而且該按鈕被點擊(Items.ascx.cs)時運行的方法。單擊時,我想要更新第一個代碼塊中的項目超鏈接。此代碼僅在特定頁面上顯示。

protected void UpdateItems(object sender, EventArgs e) 
    { 
      UpdateItems.Text = "Done!"; 
      // can't use Items.Text = "1" or similar due to this being a separate control 
    } 

當我點擊按鈕時,文本成功更改爲「完成!」這意味着事件的發射很好。問題是我不知道如何更新Site.master文件中的項目超鏈接。我搜索了許多不同的想法,最終空洞起來。

我想指出,這是對現有網站的更新,因此這些控件的位置無法輕鬆移動,或者根本無法移動,原因在於它們如何影響佈局以及它們在佈局中的位置的網頁。

回答

0

首先修復Site.master錯誤類型:將updatemode屬性從超鏈接移動到UpdatePanel標記。接下來,有兩種方法。
A.在site.master上設置UpdateMode="Always"。我希望超鏈接navigateUrl和文本不是硬編碼的。
B.在你的控制代碼

protected void UpdateItems(object sender, EventArgs e) 
    { 
      UpdateItems.Text = "Done!"; 
      var mp = this.Page.MasterPage; 
      var up = mp.FindControl("Panel11"); 
      var hl = up.FindControl("Items"); 
      //do something with hl 
      up.Update(); //if updateMode="Conditional" 
      // can't use Items.Text = "1" or similar due to this being a separate control 
    } 
+0

所以我用其中的UpdateMode設置爲Conditional,我得到一個錯誤的選項: CS1061:「System.Web.UI.Page」不包含'MasterPage'的定義 – FranticJ3

+0

對不起,'this.Page.Master' –

相關問題