首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ASP主页面中自动刷新标签文本而不加载整个页面

在ASP主页面中自动刷新标签文本而不加载整个页面
EN

Stack Overflow用户
提问于 2014-06-29 08:01:05
回答 2查看 2.1K关注 0票数 0

我在ASP母版页中有一个标签控件,它的文本将加载到母版页的Page_Load上。

母版页:

代码语言:javascript
复制
<asp:label id="Label1"> </asp:label>

Master.cs文件:

代码语言:javascript
复制
Protected void Page_load()
{
   Label1.text = " Data Refreshed at :" + getUpdatedTimestamp();
}

此标签表示在数据库中刷新数据时更新的时间戳。我们通过函数getUpdatedTimestamp()命中DB;

因此,如果使用导航到其他页面,那么当母版页再次加载时,我们将能够在母版页的page_load事件中访问数据库时获得更新的时间戳。

,我在这里的问题是:是否有任何方法可以访问DB并获得更新的时间戳,即使用户在同一页上而没有导航到其他页面.

注意:我尝试了母版页中的update面板,并将触发器设置为命中DB,但为此,我需要向母版页添加一个脚本管理器。我已经拥有了所有内容页的脚本管理器,并且无法将脚本管理器添加到母版页。因此,这个选项被排除在外。

有谁能建议我怎样才能做到这一点?!!

我还尝试了javascript 函数setinterval()来完成这一任务,但是在javascript函数中仍然坚持调用服务器端函数。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-29 12:00:05

使用脚本管理器只更新一个小标签可能会导致从服务器传输的数据的开销。

我建议使用客户端javascript,它将在间隔调用服务器端WebMethod。

在您的WebMethod页面上创建一个ASPX.CS:

代码语言:javascript
复制
    [System.Web.Services.WebMethod]
    public static string GetCurrentTime()
    {
        return DateTime.Now.ToString();
    }

在客户端代码中,使用WebMethod调用获取服务器jQuery,并在标签中显示服务器响应:

代码语言:javascript
复制
<html>
    <head runat="server">
        <enter code here!-- jQuery required -->
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
        <script type="text/javascript">
            function ShowCurrentTime() {
                // Ajax call to YOUR_PAGE.aspx/GetCurrentTime
                $.ajax({
                    type: "POST",
                    url: "Default.aspx/GetCurrentTime", // Change Default.aspx to your ASPX page name, and GetCurrentTime to your server-side WebMethod name
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: OnSuccess // OnSuccess method is called when AJAX request receives the data from the server
                });
            }

            function OnSuccess(response) {
                // The response will contain JSON object like {"d":"29.6.2014 13:21:47"},
                // so the actual data is response.d
                $("#lblCurrentTime").text(response.d); // Fill our SPAN label with the data. 
            }

            $(function () {
                // Call every 1000 miliseconds
                window.setInterval(ShowCurrentTime, 1000);
            });
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
            <!-- LABEL TO SHOW CURRENT TIME -->
            <span id="lblCurrentTime"></span>
        </form>
    </body>
</html>

就这样。这样,从服务器传输的数据就越少越好。调用服务器端的WebMethod不会像标准回发那样对服务器产生巨大的性能影响,因为WebMethod避免了标准的页面生命周期事件。

更多信息:

http://www.aspsnippets.com/Articles/Call-ASPNet-Page-Method-using-jQuery-AJAX-Example.aspx

http://msdn.microsoft.com/en-us/library/byxd99hx(v=vs.90).aspx

票数 0
EN

Stack Overflow用户

发布于 2014-06-29 12:00:28

您必须将标签放在UpdatePanel中,这样就可以在不重新加载整个页面的情况下更新标签。如果您已经这样做了,则需要设置一个触发器来执行操作(在您的情况下,需要更新时间戳)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24474221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档