繁体   English   中英

立即获取消息/通知,而无需刷新asp.net中的页面

[英]Getting the messages/notifications instantly without refreshing the page in asp.net

我有一个标签,上面显示数字,数字是数据库中数据的计数。 每当新数据保存在DB中时,标签中的数字应增加。 当我刷新页面时,它会增加,因为我在代码隐藏中调用了page_load上的方法。

我的想法是:

  • 我应该定期调用该方法而不刷新页面。

为此,我知道我应该使用AJAX,但是我找不到适合自己的用法。

您能指导我解决问题吗?

这是aspx页面上的标签:

   <div id="panoramCouponBarLittleTalep">
      <asp:Label ID="LabelTalepSayisiSag" ClientIDMode="Static" Text="" runat="server" />
   </div>

这是page_load:

 protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["user"] != null)
        {
            if (!IsPostBack)
            {                  
                SonBesGunTalepSayisi();
            }               
        }            
    }

和我使用的方法:

 private void SonBesGunTalepSayisi()
    {
        RequestProvider rP = new RequestProvider();

        int talepSayisi = rP.LastFiveDaysRequestCount();

        if (talepSayisi > 0)
        {
            LabelTalepSayisiSag.Text = talepSayisi.ToString();

        }
        else
        {               
            LabelTalepSayisi.Text = "";
        }
    }

我将使用ASP.NET AJAX页面方法作为您的JavaScript AJAX将基于计时器调用的服务器端点; 像这样:

代码隐藏:

[WebMethod]
public static string GetRequestCount()
{
    RequestProvider rP = new RequestProvider();

    int talepSayisi = rP.LastFiveDaysRequestCount();

    if (talepSayisi > 0)
    {
        return talepSayisi.ToString();

    }

    return "";
}

我会在您的Label控件中添加一个CssClass值,因为这样将使其更易于在jQuery选择器中使用,如下所示:

标记:

<div id="panoramCouponBarLittleTalep">
    <asp:Label ID="LabelTalepSayisiSag" ClientIDMode="Static" 
               Text="" runat="server" CssClass="TheLabel" />
</div>

$(document).ready(function() {
    setInterval(ajaxCall, 5000); // 5000 MS == 5 seconds
});

function ajaxCall() {
    $.ajax({
        type: "POST",
        url: "PageName.aspx/GetRequestCount",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(result) {
            // Put result of call into label
            $('.TheLabel').text(result);
        }
    });
}

注意:显然,您可以根据需要和性能将计时器间隔值调整为更大或更小。 另外, Label控件上的CssClass值还避免了困扰ASP.NET服务器控件的名称修改问题。 即使您使用的是ClientIDMode="Static" ,我还是希望尽量避免在jQuery中使用服务器控件的ID,因为ASP.NET不会混淆类名。

您可以使用ASP页面方法来做到这一点:

http://www.geekzilla.co.uk/View7B75C93E-C8C9-4576-972B-2C3138DFC671.htm

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM