如何在AJAX回调后更新asp:Label

时间:2012-03-02 00:17:22

标签: callback asp.net-4.0

我正在使用ajaxtoolkit:评级。这一切都很好,除了我试图在改变的事件上写一个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;

    }

我要做的是将名为“YourRatingNumber”文本的asp:label控件更新为e.value。我尝试了很多方法。我意识到asp:label被渲染为span标签,但我似乎无法访问该值。怎么办呢?

谢谢...... Bob

1 个答案:

答案 0 :(得分:0)

AJAX是异步的,这意味着不会发生页面加载。在AJAX操作期间更改标签服务器端的值不会导致任何客户端。您需要通知客户端更新页面。你应该使用javascript来做到这一点。我不认为您可以使用Web窗体执行此操作。如果您使用MVC,您可以使用他们的AJAX助手来执行此操作,但这需要重写站点。

我建议您编写一些javascript来引发AJAX事件,并在获得响应时更新标签。我还建议阅读http://w3schools.com/ajax/default.asp,它解释了如何使用javascript创建AJAX请求,但是你需要稍微调整一下才能使用asp.net。

另请注意,您应该包括使用Web窗体还是MVC,尽管它们相似,但它们对AJAX的处理方式不同。