2012-03-02 15 views
0

我正在使用ajaxtoolkit:評級。這一切都工作正常,除了我試圖寫一個值改變事件的ASP標籤,並不能得到它的工作。下面是代碼中的相關行:如何在AJAX回調後更新asp:標籤

page.aspx

<asp:LoginView ID="LoginView1" runat="server"> 
<LoggedInTemplate> 
    <td> 
     <ajaxtoolkit:Rating ID="YourRating" runat="server" BehaviorID="RatingBehavior1" CurrentRating="0" 
      MaxRating="10" StarCssClass="ratingStar" WaitingStarCssClass="savedRatingStar" 
      ReadOnly="false" FilledStarCssClass="filledRatingStar" EmptyStarCssClass="emptyRatingStar" 
      OnChanged="YourRating_Changed" /> 
    </td> 
    <td> 
     (<asp:Label ID="YourRatingNumber" Text="" runat="server"></asp:Label>) 
    </td> 
</LoggedInTemplate> 
<AnonymousTemplate> 
    <td> 
    <a href="../Default.aspx">Login</a> or Register to Rate 
    </td> 
</AnonymousTemplate> 

page.aspx.cs

 protected void YourRating_Changed(object sender, AjaxControlToolkit.RatingEventArgs e) 
    { 
     ((HtmlGenericControl)FindControl("MainContent_LoginView1_YourRatingNumber")).InnerHtml = e.Value; 

    } 

我想要做的就是更新我的ASP:標籤控件將名爲「YourRatingNumber」的文本命名爲e.value。我嘗試了很多方法。我意識到asp:標籤呈現爲span標籤,但我似乎無法訪問該值。如何做到這一點?

謝謝...鮑勃

回答

0

AJAX是異步的,這意味着一個頁面加載不會發生。在AJAX操作期間更改標籤服務器端的值不會導致客戶端。您需要發信號通知客戶更新頁面。你應該使用JavaScript來做到這一點。我不認爲你可以使用Web窗體來做到這一點。如果您使用MVC,則可以使用他們的AJAX幫助程序執行此操作,但它需要重寫網站。

我建議你寫一些javascript來引發AJAX事件,並讓它在獲得響應時更新標籤。我還建議閱讀http://w3schools.com/ajax/default.asp,它解釋瞭如何使用JavaScript來創建AJAX請求,但您需要稍微調整它以使用asp.net。

另外請注意,你應該包括你使用的是Web Forms還是MVC,雖然它們是相似的,但它們有不同的AJAX處理。

+0

我明白你在說什麼,感謝你的意見。我正在使用Web Foms。我仍然認爲有一種方法通過使用包含我的asp:Label ID =「YourRatingNumber的UpdatePanel來實現我的YourRating_Changed事件。當然,我可以將ajaxtoolkit上的AutoPostBack更改爲true:Rating,但是這會破壞ajax的目的。 javascript函數(或添加一個)使用從上述YourRating_Changed塊的e.callbackresult? – Bob 2012-03-02 03:08:10

+0

我把ajaxtoolkit評級控制在一個updatepanel中,並使用BehaviorID來調用我的JS函數: Sys.Application.add_load(function( ){$ 找到( 「RatingBehavior1」)add_EndClientCallback(功能(發送者,例如){ \t \t \t的document.getElementById( 'MainContent_LoginView1_YourRatingNumber')的innerHTML = e.get_CallbackResult(); }); }); 現在很好用 – Bob 2012-03-02 04:46:38

相關問題