将Ajax星级评分值检索到Asp.net后端

时间:2019-01-01 06:52:03

标签: c# asp.net ajaxcontroltoolkit

这是我在aspx页面中的评分控件。当用户单击星标时,我要更新label3。

<style type="text/css">
    .Star {
        background-image: url(img/Star.gif);
        height: 17px;
        width: 17px;
    }

    .WaitingStar {
        background-image: url(img/WaitingStar.gif);
        height: 17px;
        width: 17px;
    }

    .FilledStar {
        background-image: url(img/FilledStar.gif);
        height: 17px;
        width: 17px;
    }
</style>
<div>

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

    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <ajaxToolkit:Rating ID="Rating1" AutoPostBack="true" OnChanged="OnRatingChanged" runat="server"
                StarCssClass="Star" WaitingStarCssClass="WaitingStar" EmptyStarCssClass="Star" CurrentRating="2"
                FilledStarCssClass="FilledStar">
            </ajaxToolkit:Rating>
        </ContentTemplate>
    </asp:UpdatePanel>
    <asp:Label runat="server" ID="label3"></asp:Label>
    <asp:Label runat="server" ID="label4" Text="above"></asp:Label>
</div>

我尝试使用Rating1.CurrentRating.ToString(),但Label3上没有任何内容。

protected void OnRatingChanged(object sender, RatingEventArgs e)
    {
        label3.Text = Rating1.CurrentRating.ToString();
    }

我的代码是否错误,或者我可以通过其他方式获取值?我打算从后端获取值,因为稍后我会将其添加到数据库中。请帮忙。谢谢。

1 个答案:

答案 0 :(得分:1)

我认为您要寻找的是OnClick()而不是OnChange(),因为当用户单击Rate控件并更改其等级值时,您希望获得{{1}的当前值}控制并显示在标签中,顺便说一句,您应该在desc下方执行以下操作,
在考虑诸如RateUpdatePanel之类的UpdateMode的属性之前,可以将ChildrenAsTriggers的{​​{1}}设置为UpdateMode="Always" ChildrenAsTriggers="true",如果通过设置它们仍然不起作用请执行以下步骤:

1-首先将标签控件移至UpdatePanel1的{​​{1}}中
2-然后处理ContentTemplate的{​​{1}}事件
3-最后,您必须具有设计模式下的内容:

UpdatePanel

以及Click()后面的代码:

ajaxToolkit:Rating

这就像一个魅力!!