2014-07-07 21 views
0

在我的站點主站中,我有一個要顯示狀態(信息,成功,錯誤,警告)消息的區域。在ASP.NET webforms中顯示一般狀態消息

在我後面的代碼,我想撥打電話如:

MessageSuccess("Some success message"); 
MessageSuccess("Another success message"); 
MessageWarning("Warning message"); 

,然後讓這些信息在頁面下次呈現時所有的顯示。

我已經嘗試了幾個方法,其中我:

  • 在會議
  • 閱讀Page_PreRender(結構保存的結構)和更新一些HTML控件
  • 清除在激發Page_Unload結構()

但是有些時候,消息顯示的很好,但PreRender出現的時間有一段時間,Page_Unload()已被調用並且沒有顯示,因爲結構是空的。

有沒有人有一個通用的工作解決方案,我可以使用我的WebForms項目來「很好地」顯示狀態消息?

+0

嘗試清除在PreRender在結構,你以後使用這些值更新您的控件。 –

回答

0

一旦我使用的東西非常接近Displaying a Custom Error Message部分Working with Partial-Page Rendering Events中描述的示例。如果你正在處理異步回發,它會很好地工作。唯一的缺點是它是爲異常處理而設計的,而不是用於成功/警告/等等。通知。

ScriptManager上有一個屬性AsyncPostBackErrorMessage,您可以使用它將任何文本消息傳遞迴客戶端。客戶端將在endRequest事件處理程序檢索消息:

Server代碼:

// inside Page code: 
var scriptManager = ScriptManager.GetCurrent(this /* assuming that this is a Page instance */); 
scriptManager.AsyncPostBackErrorMessage = "Hello world"; 

客戶端代碼:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 

function EndRequestHandler(sender, args) { 
    if (args.get_error() != undefined) { 
     var errorMessage = args.get_error().message; 
     args.set_errorHandled(true); 

     // Do whatever you need to display the message 
    } 
} 

另一種可能的解決辦法是添加客戶端函數調用使用ScriptManager.RegisterStartupScript頁面。我可以想像,你可以有一個NotificationHandler JavaScript對象這將有successwarningerror等功能,您將在服務器端調用:

protected void Page_PreRender(object sender, EventArgs e) 
{ 
    ScriptManager.RegisterStartupScript(this, GetType(), "<Some unique key for script>", "NotificationHandler.success(\"Hello world\")", true); 
}