2010-07-02 36 views
0

我是ASP.NET AJAX的新手,並試圖獲取狀態文本框/按鈕以允許 用戶在沒有回發的情況下更新狀態。我在 母版頁上有一個腳本管理器標籤,其中「enablepartialrendering」設置爲「true」。我還在內容頁面上有一個更新面板 標籤。當我嘗試這一點時,頁面回發並沒有發生。 我在做什麼錯?我正在使用ASP.NET 3.5/C#。謝謝。使用ASP.NET AJAX後取回並且不更新

母版頁剛剛表單標籤下面的下面的腳本標籤:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"> 
    </asp:ScriptManager> 

而且某處在頁面上存在的ContentPlaceHolder:

<asp:ContentPlaceHolder ID="ContentCenter" runat="server"> 
       </asp:ContentPlaceHolder> 

的的ContentPlaceHolder的相關內容標籤如下所示:

<asp:Content ContentPlaceHolderID="ContentCenter" runat="server"> 
    <div class="divContainer"> 
     <div class="divContainerBox"> 
      <div class="divContainerTitle"> 
       Network Activity</div> 
      <div class="divContainerRow"> 
       <asp:Panel ID="pnlStatusUpdate" runat="server"> 
        <asp:TextBox Width="400" Height="50" Style="font-size: 9px; padding-left: 0px; padding-right: 0px;" 
         ID="txtStatusUpdate" runat="server"></asp:TextBox> 
        <br /> 
        <asp:Button Style="font-size: 9px; padding-left: 0px; padding-right: 0px;" ID="BtnAddStatus" 
         runat="server" Text="Add" /><br /> 
        <asp:Repeater ID="repFilter" runat="server"> 
         <ItemTemplate> 
          <asp:Label ID="lblMessage" runat="server" Text='<%# ((Alert)Container.DataItem).Message %>'></asp:Label> 
         </ItemTemplate> 
         <SeparatorTemplate> 
          <hr /> 
         </SeparatorTemplate> 
        </asp:Repeater> 
        <asp:Label ID="lblMessage" runat="server"></asp:Label> 
       </asp:Panel> 
      </div> 
     </div> 
    </div> 
</asp:Content> 

這裏是服務器方法。它不返回任何東西 - 它將數據發送到「SaveStatusUpdate」到數據庫。 頁面下次回發時,將顯示新更新。 我想要的是沒有回傳,並且當點擊狀態更新按鈕時,輸入的文本是 輸入(加上朋友可能輸入的任何文本)到 。

protected void BtnAddStatusClick(object sender, EventArgs e) 
     { 
      var su = new StatusUpdate 
      { 
       CreateDate = DateTime.Now, 
       AccountId = _userSession.CurrentUser.AccountId, 
       Status = txtStatusUpdate.Text 
      }; 

      _statusRepository.SaveStatusUpdate(su); 
      _alertService.AddStatusUpdateAlert(su); 

     } 

我猜有人可能會問,什麼是「AddStautsUpdateALert」方法 的樣子,所以在這兒呢。 「_alertMessage」是狀態更新。 如何使用AJAX顯示它?

public void AddStatusUpdateAlert(StatusUpdate statusUpdate) 
     { 
      _alert = new Alert 
         { 
          CreateDate = DateTime.Now, 
          AccountId = _userSession.CurrentUser.AccountId, 
          AlertTypeId = (int) AlertType.AlertTypes.StatusUpdate 
         }; 
      _alertMessage = "<div class=\"AlertHeader\">" + GetProfileImage(_userSession.CurrentUser.AccountId) + 
          GetProfileUrl(_userSession.CurrentUser.UserName) + " " + statusUpdate.Status + "</div>"; 
      _alert.Message = _alertMessage; 
      SaveAlert(_alert); 
      SendAlertToFriends(_alert); 

     } 

回答

1

更新面板仍然發佈到服務器 - 它們只是不會將整個HTML文檔返回給客戶端。相反,他們會返回您的<asp:UpdatePanel>中包含的頁面部分並替換其內容。

只要BtnAddStatus是更新面板內,你必須啓動的部分頁面呈現,並且您還沒有禁用更新面板的觸發器,點擊按鈕會觸發你的服務器端事件(它不直接調用AddStatusUpdateAlert方法)。請參閱「Understanding Partial Page Updates with ASP.NET AJAX」。 (以前在同一個網站上有一篇很棒的文章,帶有非常有用的圖表,但它已經消失了。)

相關問題