Asp.Net Статический метод для обновления страницы - PullRequest
2 голосов
/ 10 октября 2008

У меня есть страница, которая посещает веб-сервис каждые 5 секунд, чтобы обновить информацию на странице. Я использую DynamicPopulateExtender из Ajax Control Toolkit, чтобы просто заполнить панель некоторым текстом.

То, что я хотел сделать, - это выполнить определенное условие, чтобы полностью обновить страницу.

Смогу ли я сделать это в текущем методе, который у меня есть? вот мои текущие вещи:


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();
    }

Ответы [ 2 ]

4 голосов
/ 10 октября 2008
  • Вы ничего не можете сделать с ASMX.
  • Вы можете обновить страницу из JavaScript, используя обычную перезагрузку страницы или выполнив обратную передачу, которая будет выполнять изменения на стороне сервера, а затем обновляться через UpdatePanel или, проще говоря, Response.Redirect.
3 голосов
/ 10 октября 2008

Вы можете принудительно сделать обратную передачу из Javascript, см. Эту страницу 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);

        }
    }
}

На стороне клиента при любых условиях вы можете вызвать функцию Javascript forcePostback () для принудительной обратной передачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...