planetz Ответов: 3

Всплывающее предупреждение в коде C# позади


Всем Привет,


Я попытался отобразить всплывающее предупреждение из кода c# за файлом.
Моя проблема заключается в том, что когда всплывающее утверждение является единственным, что должно быть выполнено, оно идет очень хорошо. Но когда оно сочетается с каким-то другим утверждением, оно не работает.

Например,
эта работа
if(condition)
            {
                System.Web.UI.ScriptManager.RegisterStartupScript(this, GetType(), "displayalertmessage", "alert('alert to be displayed');", true);
            }


но это не так

if (condition)
               {
                   emp.logout();
                   System.Web.UI.ScriptManager.RegisterStartupScript(this, GetType(), "displayalertmessage", "alert('alert to be displayed');", true);
               }



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

Что я уже пробовал:

если (условие)
{
Эми.выход();
Системы.Веб.Пользовательского интерфейса.Элемента управления scriptmanager.RegisterStartupScript(это, метод gettype(), "displayalertmessage", "предупреждение (предупреждение отображается');", правда);
}

Karthik_Mahalingam

что ты делаешь внутри Эми.выход();

planetz

emp. logout перенаправляет на другую страницу. Я должен показать всплывающее окно перед вызовом метода.

Karthik_Mahalingam

хорошо, что вы можете сделать, так это сначала показать предупреждение, а затем перенаправить его на другую страницу.

planetz

но, как объяснил F-ES Sitecore, поскольку html-версия будет подготовлена в конце, а перед этим произойдет перенаправление, поэтому всплывающая часть будет отброшена.

Karthik_Mahalingam

я выложил Решение, дайте попробовать,
при условии, что вы не делаете никакой логики внутри Эми.выход();

planetz

В emp.logout () есть логика.

Karthik_Mahalingam

ладно.

3 Ответов

Рейтинг:
26

F-ES Sitecore

Вы должны понять asp.net жизненный цикл страницы и порядок, в котором все происходит. Сначала запускается ваш код, который генерирует html (все, что делает RegisterStartupScript, это вводит javascript в этот html), этот html отправляется в браузер для выполнения, и именно в этот момент Вы видите всплывающее окно.

Если emp. logout перенаправляет пользователя на другую страницу, то для этого перенаправление всего html, сгенерированного вашим кодом, просто отбрасывается и заменяется страницей, которая говорит браузеру перенаправить, поэтому js, который делает ваше предупреждение, также отбрасывается и никогда не выполняется.

Важно отметить, что ваш .net-код не работает внутри браузера, вы не можете отправить что-либо в браузер до завершения страницы, а вызов RegisterStartupScript фактически не выполняет javascript.


Philippe Mori

Очень хорошо объяснено.

planetz

Да, метод выхода перенаправляет на другую страницу. Я понимаю...!! Большое вам спасибо!!
Что делать,если я отображаю предупреждение перед выходом из системы? Тогда это тоже не проявляется.

planetz

Ладно...теперь я понял...!!

Рейтинг:
1

Veeral Jani

Элемента управления scriptmanager.RegisterClientScriptBlock(это, это.Метод gettype(), "alertMessage", "предупреждение('показать мое сообщение')", правда);


Рейтинг:
0

Karthik_Mahalingam

Если вы хотите показать предупреждение перед перенаправлением, вы должны сделать это в javascript

emp.logout();
               string redirectScript = " window.location.href = 'otherPage.aspx';";
               System.Web.UI.ScriptManager.RegisterStartupScript(this, GetType(), "displayalertmessage", "alert('alert to be displayed');" + redirectScript, true);


planetz

Я не перенаправляю на aspx напрямую. Метод выхода из системы содержит некоторые обновления,а затем перенаправление. Поэтому мне нужно отобразить предупреждение, а затем перейти к методу, который включает в себя перенаправление.

Karthik_Mahalingam

о, тогда мне придется удалить это решение.

planetz

Я нашел обходной путь. Чтобы выполнить логику отдельно, а затем перенаправить отдельно. Поскольку это часть ответа, я не отмечаю ваш ответ как решение.

Karthik_Mahalingam

- все в порядке.