Toastr в веб-формах - PullRequest
       13

Toastr в веб-формах

0 голосов
/ 26 февраля 2019

У меня есть метод в моей MasterPage для отображения сообщений Toastr

 public void ShowToastr(Page page, string message, string title, string type = "info")
    {
        ScriptManager.RegisterStartupScript(page, page.GetType(), "toastr_message",
            $"toastr.{type.ToLower()}('{message}', '{title}');", addScriptTags: true);
    }
    public void ResponseRedirectAfterToastr(Page page, string message, string title, string path, string type = "info")
    {
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        sb.Append("toastr." + type.ToLower() + "(");
        sb.Append("'" + message + "'" + "," + "'" + title);
        sb.Append("');");
        sb.Append("window.location.href=" + "'" + path + "';");
        //sb.Append("return false");
        ScriptManager.RegisterStartupScript(page, page.GetType(), "toastr_message",
            sb.ToString(), addScriptTags: true);
    }
    public void ToastrMessageOnPageLoad(Page page, string message, string title, string type = "info")
    {
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        sb.Append("window.onload=function(){");
        sb.Append("toastr." + type.ToLower() + "(");
        sb.Append("'" + message + "'" + "," + "'" + title);
        sb.Append("')};");
        Page.ClientScript.RegisterStartupScript(page.GetType(), "Response",
            sb.ToString(), addScriptTags: true);
    }

Я использую их со страниц, на которых есть следующие вложенные мастер-страницы:

Master.Master.ResponseRedirectAfterToastr(this, "Partner created successfully", "Success", "/business-partners",nameof(ToastrTypeEnum.Success));

Я нажалостановка, когда я хотел отобразить сообщение из пользовательского элемента управления, поэтому я переместил эти функции в статический класс (после предложения здесь)

 public static void DisplayMessage(string message, string title, string type = "info")
    {
        var page = HttpContext.Current.CurrentHandler as Page;
        ScriptManager.RegisterStartupScript(page, page.GetType(), "toastr_message", $"toastr.{type.ToLower()}('{message}', '{title}');", addScriptTags: true);
    }

    public static void RedirectAfterDisplayMessage(Page page, string message, string title, string path, string type = "info")
    {
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        sb.Append("toastr." + type.ToLower() + "(");
        sb.Append("'" + message + "'" + "," + "'" + title);
        sb.Append("');");
        sb.Append("window.location.href=" + "'" + path + "';");
        //sb.Append("return false");
        ScriptManager.RegisterStartupScript(page, page.GetType(), "toastr_message",
            sb.ToString(), addScriptTags: true);
    }
    public static void DisplayMessageOnPageLoad(Page page, string message, string title, string type = "info")
    {
        var sb = new StringBuilder();
        sb.Append("window.onload=function(){");
        sb.Append("toastr." + type.ToLower() + "(");
        sb.Append("'" + message + "'" + "," + "'" + title);
        sb.Append("')};");
        ScriptManager.RegisterStartupScript(page, page.GetType(), "Response",
            sb.ToString(), addScriptTags: true);
    }

Затем я вызываю это так:

 InfoDisplay.DisplayMessage( "Partner created successfully", GetGlobalResourceObject("NotificationMessages", "INFO_HEADER_SUCCESS") as string, nameof(ToastrTypeEnum.Success));

это прекрасно работает только для первых методов: DisplyMessage, но не тогда, когда мне нужно перенаправить или перезагрузить страницу после функции ..

Есть предложения?

...