Telerik RadAlert проблема с кешем кнопки назад - PullRequest
0 голосов
/ 24 марта 2010

Я уверен, что у вас уже был этот, так что, если бы вы могли указать мне на что-то подобное ...

У меня на сервере создается окно RadAlert с использованием обычной процедуры Sys.Application.remove_load и add_load, однако предупреждение продолжает появляться, поскольку кажется, что он кэшируется, когда пользователь нажимает кнопку «Назад» после его активации. Я попытался поместить событие onclick на кнопку, чтобы очистить функцию с помощью remove_load, прежде чем она перейдет на следующую страницу, однако она все еще не очищает ее.

Используется при проверке, поэтому, если пользовательский ввод не прошел проверку, он появляется. Если они затем идут и вводят правильную проверку, они затем переходят на следующую страницу. Если они затем используют кнопку «Назад», то здесь она снова появляется. Есть идеи?

Серверная сторона:

private void Page_Load(object sender, System.EventArgs e) 
{
   if (!IsPostBack) 
   {
      btnSearch.Attributes.Add("onclick", "Sys.Application.remove_load(f);"); 
   }
}

private void btnSearch_Click(object sender, System.EventArgs e) 
{
   string radalertscript = "(function(){var f = function(){radalert('Welcome to RadWindow Prometheus!',     330,     210);   Sys.Application.remove_load(f);};Sys.Application.add_load(f);})()";

   RadAjaxManager1.ResponseScripts.Add(radalertscript);
}

Я также пытался использовать

   RadAjaxManager1.ResponseScripts.Clear();

до перехода на следующую страницу события обратной передачи

Ответы [ 3 ]

1 голос
/ 25 марта 2010

То, что говорит Лингвомир, верно. В качестве решения я бы предложил изменить эту кнопку поиска. например,

 <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
    <AjaxSettings>
        <telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
            <UpdatedControls>
                <telerik:AjaxUpdatedControl ControlID="Button1" />
            </UpdatedControls>
        </telerik:AjaxSetting>
    </AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadWindowManager ID="RadWindowManager1" runat="server">
</telerik:RadWindowManager>
<asp:Button ID="Button1" runat="server" Text="show radalert" OnClick="Button1_Click" /><br />

и в коде:

 protected void Button1_Click(object sender, EventArgs e)
{
    string radalertscript = "radalert('Welcome to RadWindow Prometheus!',330,210);";
    RadAjaxManager1.ResponseScripts.Add(radalertscript);
}
0 голосов
/ 14 февраля 2013

Вам нужна промежуточная страница, которая загружает клиентскую версию предупреждение, функция обратного вызова может затем перейти к правильной странице использование location.replace (...) - использование location.replace удалит эту промежуточную страницу предупреждений из истории

надеюсь, что поможет

0 голосов
/ 24 марта 2010

Я не думаю, что проблема в функции radalert () - вы получите то же поведение, если будете использовать обычное предупреждение браузера (). Событие Sys.Application.Load возникает при каждой загрузке страницы в браузере, в том числе при нажатии кнопки «Назад» для ее повторного открытия. Если код, который добавляет radalert (), также находится на странице, он также будет работать, и предупреждение будет отображаться во время загрузки.

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