В окне предупреждения не отображается строка stati c, когда она изменена из другого класса, но работает, когда я меняю ее из исходного класса - PullRequest
0 голосов
/ 16 июня 2020

У меня есть веб-приложение c#. Я пытаюсь показать пользователю ошибку, полученную из моего класса Data.cs. У меня есть строка publi c stati c в файле кода программной части (Udalost.aspx.cs), и я добавляю ошибку в эту строку по мере их появления.

Проблема в том, когда я измените текст из моего класса Udalost.aspx.cs, все работает нормально, но когда я меняю его из моего Data.cs (stati c class), окно предупреждения не отображается. Я попытался остановиться на строке, в которой вызывается окно предупреждения, и даже изменить строковое значение на то же, которое установил Udalost.aspx.cs (который отлично работает), и даже после этого окно предупреждения не появляется, поэтому оно вероятно, проблема не в строковом значении.

Может быть, это время, я вызываю метод для записи окна предупреждения в Page_PreRender. Проблема не в строковых значениях ... новые лайнеры (\ n; \ n), я пробовал использовать метод из Udalost.aspx.cs, поэтому он publi c stati c, но я не повезло. Я попытался вызвать inner_ShowMessageToUser даже сразу после того, как было выполнено сохранение в DataBase в data.cs, ​​и при этом не появилось ни одного окна предупреждения.

//Udalost.aspx.cs - WebForm2   
protected void Page_PreRender(object sender, EventArgs e)//after everything is done and before sending to client
        {
            ProvedPredOdeslanimKlientovi();
        }
        private void ProvedPredOdeslanimKlientovi()
        {
            if(ErrorMessage != "")//if some error occured
            {
                inner_ShowMessageToUser(ErrorMessage);//show the allert box called only from one place in app
                ErrorMessage = "";//null the ms
            }
        } 

        public static void ShowError(string error)//add some error to the Error ms and do new line
        {
            ErrorMessage = error + "\\n";//přidej zprávu a odřádkuj
        }
public void inner_ShowMessageToUser(string text)//show the alert box - called only once
    {
        try
        {
            this.Page.ClientScript.RegisterStartupScript(this.GetType(), "ex", "alert('" + text + "');", true);
            //Page.ClientScript.RegisterStartupScript(this.GetType(), "DeleteCond", $"<script type=text/javascript> alert('{text}')</script>");
        }
        catch(Exception e)
        {

            Data.ExeptionHandler(e);
        }

    }


//Data.cs
private static void ShowError(string error)
        {
            WebForm2.ErrorMessage += error+ "\\n";//the same but for Data.cs
        }
...