我正在使用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
答案 0 :(得分:0)
AJAX是异步的,这意味着不会发生页面加载。在AJAX操作期间更改标签服务器端的值不会导致任何客户端。您需要通知客户端更新页面。你应该使用javascript来做到这一点。我不认为您可以使用Web窗体执行此操作。如果您使用MVC,您可以使用他们的AJAX助手来执行此操作,但这需要重写站点。
我建议您编写一些javascript来引发AJAX事件,并在获得响应时更新标签。我还建议阅读http://w3schools.com/ajax/default.asp,它解释了如何使用javascript创建AJAX请求,但是你需要稍微调整一下才能使用asp.net。
另请注意,您应该包括使用Web窗体还是MVC,尽管它们相似,但它们对AJAX的处理方式不同。