【发布时间】:2011-10-30 10:45:02
【问题描述】:
当我尝试使用以下代码将节点添加到树视图中时,出现 ArgumentOutOfRange 异常:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Page.User.Identity.IsAuthenticated)
{
NavigationTree.Nodes.Add(AuthUserNode);
}
else
{
NavigationTree.Nodes.Remove(AuthUserNode);
}
}
}
但是我可以将节点添加为某个节点的子节点
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Page.User.Identity.IsAuthenticated)
{
NavigationTree.Nodes[0].ChildNodes.Add(AuthUserNode);
}
else
{
NavigationTree.Nodes.Remove(AuthUserNode);
}
}
}
我在这里错过了什么?
【问题讨论】:
-
不知道但是否只允许一个根节点?
-
不,不是——而且文档:msdn.microsoft.com/de-de/library/58hx3b2a.aspx 没有给出“OutOfRange”异常的提示......奇怪。 AuthUserNode 来自哪里?
-
你怎么知道else语句中有需要删除的节点?您是否尝试在没有节点时删除节点?
-
插入字符串而不是节点,代码会运行吗?
-
@Ben:我首先想到的是相同的思路,但文档没有说明任何关于删除的异常 - 我猜如果树节点不是集合的端口,它只是忽略调用(与其他实例相同)框架中的 .Remove - 只有在正常情况下你会得到一个布尔答案)