繁体   English   中英

Asp.Net静态方法刷新页面

[英]Asp.Net Static method to refresh page

我有一个页面每5秒点击一次Web服务以更新页面上的信息。 我正在使用Ajax控件工具包中的DynamicPopulateExtender来用一些文本填充面板。

我想做的是,如果满足特定条件,则完全刷新页面。

我可以使用当前的方法来执行此操作吗? 这是我目前的东西:


ASP.NET

<cc1:DynamicPopulateExtender ID="DynamicPopulateExtender1" runat="server"
ClearContentsDuringUpdate="true" TargetControlID="panelQueue" BehaviorID="dp1"
ServiceMethod="GetQueueTable" UpdatingCssClass="dynamicPopulate_Updating" />

使用Javascript

Sys.Application.add_load(function(){updateQueue();});

    function updateQueue()
    {
        var queueShown = document.getElementById('<%= hiddenFieldQueueShown.ClientID %>').value;

        if(queueShown == 1)
        {
            var behavior = $find('dp1');
            if (behavior)
            {
                behavior.populate();                    
                setTimeout('updateQueue()', 5000);
            }
        }
    }

服务器(C#)

[System.Web.Services.WebMethod]
    [System.Web.Script.Services.ScriptMethod]
    public static string GetQueueTable()
    {
        System.Text.StringBuilder builder = new System.Text.StringBuilder();

        try
        {
             // do stuff
        }
        catch (Exception ex)
        {
             // do stuff
        }

        return builder.ToString();
    }
  • 您无法通过ASMX执行任何操作。
  • 您可以通过使用常规的页面重新加载或执行将执行服务器端更改的回发,然后通过UpdatePanel或更简单地通过Response.Redirect进行更新的方式从JavaScript刷新页面。

您可以强制从Java执行回发,有关示例,请参见Default.aspx页面:


Default.aspx的

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>

    <script type="text/javascript" language="javascript">
        function forcePostback()
        {
            <%=getPostBackJavascriptCode()%>;
        }
    </script>

</head>

<body onload="javascript:forcePostback()">
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="Label1" runat="server" Text="Postbacking right now..."></asp:Label>
    </div>
    </form>
</body>
</html>

Default.aspx.cs

namespace ForcingApostback
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack) Label1.Text = "Done postbacking!!!";
        }

        protected string getPostBackJavascriptCode()
        {
            return ClientScript.GetPostBackEventReference(this, null);

        }
    }
}

在客户端,在任何情况下,您都可以调用forcePostback()Javascript函数来强制执行Postback。

暂无
暂无

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

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