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



我有一个标签,我在其中显示数字,数字是来自数据库的数据计数。每当数据库中保存了新数据时,标签中的数字就会增加。当我刷新页面时,它会增加,因为我在codebehind中调用了page_load上的方法。

我的想法是:

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

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

你能告诉我一个解决方案吗?

这是aspx页面上的标签:

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

这是页面加载:

 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

最新更新