2010-05-13 39 views
0

我們正在使用配置爲延遲加載的asp:TreeView。如果在加載頁面後用戶已註銷,則爲OnTreeNodePopulate分配的回調方法會引發異常。我們想要做的是將用戶引導到登錄頁面。ASP TreeView OnTreeNodePopulate的回調異常/錯誤處理?

首先嚐試捕獲服務器上的異常並嘗試Response.Redirect(...),但這不起作用,因爲您無法在回調中重定向。

我已經嘗試了各種其他方法,包括使用ClientScript.RegisterStartupScript(...),但似乎不適用於OnTreeNodePopulate。

如果有某種方法可以掛鉤客戶端的回調事件處理,那麼這很容易,但是TreeView在這裏似乎沒有提供任何東西。

對此提出建議?

回答

0

行,我有一種變通方法,但我還是希望能聽到其他的建議,因爲這是總藏污納垢:

在我的回調我趕上有以下塊除外:

catch (Exception ex) 
{ 
    if (IsAuthException(ex)) 
    { 
     e.Node.ChildNodes.Add(new TreeNode(@"<script type=""text/javascript"">window.location.href = 'Default.aspx';</script>")); 
    } 
    else 
    { 
     throw; 
    } 
} 

幸運的是,TreeView不會轉義任何東西,所以JS被瀏覽器執行並將用戶引導到登錄頁面。

+0

其實這在IE中不起作用 - 它根本不執行JS。我發現了一些甚至更骯髒,但在IE和FF都可以使用的東西: e.Node.ChildNodes.Add(new TreeNode(@「」)); 圖像具有無效的URL,因此會調用onerror事件。尼斯。 – 2010-05-13 13:35:29