Madhukar Krishna Ответов: 1

Проблема с clientscript.registerstartupsc...


У меня есть следующий код в файле aspx:-
<form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
    </div>
    </form>

В коде позади я пытаюсь запустить предупреждение javascript с помощью ClientScript.RegisterStartupScript.
Логика моей программы заключается в том, что я сначала создаю необработанное исключение в событии нажатия кнопки следующим образом:-
int l1 = int.Parse("Madhukar"); // This causes exception

а затем это исключение автоматически передается на уровень страницы, поскольку оно не обрабатывается и автоматически обрабатывается следующим методом обработчика ошибок уровня страницы:-
protected void Page_Error(object sender, EventArgs e)

В этом методе я обрабатываю это событие исключения с помощью
Exception ex = Server.GetLastError(); // This gets the latest exception in the program.

Я использую следующий код, чтобы получить сообщение об ошибке:-
string message = string.Format("At Page Level : Message: {0}\\n\\n", ex.Message);
        message += string.Format("StackTrace: {0}\\n\\n", ex.StackTrace.Replace(Environment.NewLine, 

string.Empty));
        message += string.Format("Source: {0}\\n\\n", ex.Source.Replace(Environment.NewLine, 

string.Empty));
        message += string.Format("TargetSite: {0}\\n\\n", ex.TargetSite.ToString().Replace

(Environment.NewLine, string.Empty));

Затем я пытаюсь показать сообщение в предупреждающем сообщении javascript, используя следующий код:-
ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert(\"" + message + "\");", true);

Проблема в том, что он не показывает предупреждение javascript. Я даже попробовал простую :
ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('hi msg from server');", true);

Это также не показывало всплывающее окно предупреждения.

Я также использовал следующий код:-
Response.Write(message);  //This works
Response.Write("<script type='text/javascript'>alert('" + message + "');</script>"); // This also works.

Они оба прекрасно работают и показывают предупреждение javascript и пишут на результирующую веб-страницу.

Окончательный код выглядит следующим образом:-
protected void Button1_Click(object sender, EventArgs e)
    {
        int l1 = int.Parse("Madhukar"); // This causes unhandled exception
    }


 protected void Page_Error(object sender, EventArgs e)
    {
        Exception ex = Server.GetLastError();

string message = string.Format("At Page Level : Message: {0}\\n\\n", ex.Message);
        message += string.Format("StackTrace: {0}\\n\\n", ex.StackTrace.Replace(Environment.NewLine, 

string.Empty));
        message += string.Format("Source: {0}\\n\\n", ex.Source.Replace(Environment.NewLine, 

string.Empty));
        message += string.Format("TargetSite: {0}\\n\\n", ex.TargetSite.ToString().Replace

(Environment.NewLine, string.Empty));

ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert(\"" + message + "\");", true); 

//Show the javascript pop up alert.

}

Пожалуйста помочь.

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

Я пытался :-
ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('hi msg from server');", true);
This also didn't show an alert popup.

Я тоже пытался
ClientScriptManager cs = Page.ClientScript;

        // Check to see if the startup script is already registered.
        if (!cs.IsStartupScriptRegistered(this.GetType(), "alert"))
        {
            cs.RegisterClientScriptBlock(this.GetType(), "alert", "alert('hi msg from server');", true);
        }

это тоже не работает.

Я тоже пытался :-
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "", script, true);

Это тоже не работает

F-ES Sitecore

Как появляется страница при ошибке? Показывает ли он стандартную страницу ошибок или пользовательскую страницу ошибок?

Karthik_Mahalingam

вы используете панель обновления?

1 Ответов

Рейтинг:
2

Kornfeld Eliyahu Peter

Все дело в этом page-life-cycle...To RegisterStartupScript для работы жизненного цикла должен быть завершен,но ошибка (по характеру обработки ошибок try-catch) нарушает его...
Таким образом, единственный способ сделать что-то на той же странице-это напрямую вызвать ответ.Метод write...
---
Однако. Если все, что вы хотите, это показать предупреждение JavaScript, то сделайте весь код непосредственно в обработчике событий OnClick - оттуда RegisterStartupScript будет работать на вас и не нужно будет бросать исключение ни за что (исключения стоят дорого)...


Madhukar Krishna

Спасибо за ответ. Я уже знаю, что вы сказали. Я знаю, что исключения стоят дорого и замедляют работу веб-сайта, но я экспериментировал с обработкой исключений на разных уровнях, таких как try-catch(это работает), уровень страницы в методе Page_Error( это не работает), и мне еще предстоит попробовать уровень приложения в методе Application_Error в файле Global.asax.
Запрос. ответ работает на всех уровнях. Но есть ли какой-нибудь способ получить ClientScript?RegisterStartupScript в методе page_error? Пожалуйста, любая помощь будет оценена по достоинству.