我们正在使用配置了延迟加载的asp:TreeView。如果用户自加载页面后已注销,则为OnTreeNodePopulate分配的回调方法将引发异常。我们想要做的是将用户引导到登录页面。
首次尝试是在服务器上捕获异常并尝试使用Response.Redirect(...),但这不起作用,因为您无法在回调中重定向。
我尝试过各种其他方法,包括使用ClientScript.RegisterStartupScript(...),但这似乎不适用于OnTreeNodePopulate。
如果我们可以通过某种方式挂钩客户端上的回调事件处理,那么它很容易,但TreeView似乎没有提供任何内容。
建议?
答案 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会被浏览器执行并将用户定向到登录页面。