ASP TreeView OnTreeNodePopulate的回调异常/错误处理?

时间:2010-05-13 12:57:43

标签: c# asp.net treeview

我们正在使用配置了延迟加载的asp:TreeView。如果用户自加载页面后已注销,则为OnTreeNodePopulate分配的回调方法将引发异常。我们想要做的是将用户引导到登录页面。

首次尝试是在服务器上捕获异常并尝试使用Response.Redirect(...),但这不起作用,因为您无法在回调中重定向。

我尝试过各种其他方法,包括使用ClientScript.RegisterStartupScript(...),但这似乎不适用于OnTreeNodePopulate。

如果我们可以通过某种方式挂钩客户端上的回调事件处理,那么它很容易,但TreeView似乎没有提供任何内容。

建议?

1 个答案:

答案 0 :(得分: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会被浏览器执行并将用户定向到登录页面。