У меня есть метод в моей 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, но не тогда, когда мне нужно перенаправить или перезагрузить страницу после функции ..
Есть предложения?