Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何在代码隐藏页中创建文件夹_Asp.net_Directory - Fatal编程技术网

Asp.net 如何在代码隐藏页中创建文件夹

Asp.net 如何在代码隐藏页中创建文件夹,asp.net,directory,Asp.net,Directory,这是关于昨天的问题。问题是我想在运行时创建动态文件夹。文件夹名称将通过文本框输入,输出将显示在树视图中。如果我在textbox1中输入第一个文件夹名称并单击“添加文件夹”按钮,则表单将提交。当我提交多个同名文件夹时,输出应该是名称的索引增量(例如,FooFolder、FooFolder(2)、FooFolder(3)等)。有两个事件:添加文件夹事件和删除文件夹事件。如果我选择一个特定的子文件夹并单击“删除文件夹”按钮,该文件夹将被删除。为了添加文件夹,我编写了以下代码: TreeNode tno

这是关于昨天的问题。问题是我想在运行时创建动态文件夹。文件夹名称将通过文本框输入,输出将显示在树视图中。如果我在textbox1中输入第一个文件夹名称并单击“添加文件夹”按钮,则表单将提交。当我提交多个同名文件夹时,输出应该是名称的索引增量(例如,FooFolder、FooFolder(2)、FooFolder(3)等)。有两个事件:添加文件夹事件和删除文件夹事件。如果我选择一个特定的子文件夹并单击“删除文件夹”按钮,该文件夹将被删除。为了添加文件夹,我编写了以下代码:

TreeNode tnode = new TreeNode();
if (TreeView1.Nodes.Count > 0)
        {
            int found = 0;
            for (int i = 0; i < TreeView1.Nodes.Count; i++)
            {
                if (TreeView1.Nodes[i].Text == TextBox1.Text)
                    found += 1+i;
            }
            if (found > 0)
            {
                tnode.Text = TextBox1.Text + found.ToString();
            }
            else
            {
                tnode.Text = TextBox1.Text;
            }
        }
        else
        {
            tnode.Text = TextBox1.Text;
        }
        TreeView1.Nodes.Add(tnode);
}
在树视图中,我设置了
ImageSet=“XPFileExplorer”
。因此,输出应如下所示:

Sumit
Sumit(1)
Sumit(1)
Sumit(1)
Amit
Amit(5)
Amit(5)
Amit(5)
-Root
        -Sumit(Parent1)
                  NewFolder
                  NewFolder(2)
                  NewFolder(3)
                  NewFolder(4)
                  NewFolder(5)
         -Amit(Parent2)
                  FooFolder
                  FooFolder(2)
                  FooFolder(3)
                  FooFolder(4)
                  FooFolder(5)
如果我删除任何子文件夹,例如Newfolder(3)和Newfolder(4),并在同一Sumit(Parent1)下创建这些相同的文件夹,那么索引应该是Newfolder(3),Newfolder(4)。如果我在Sumit下创建了一个同名的NewFolder,那么索引应该是NewFolder(6)


有人可以修改我的代码以获得所需的输出吗?

在您这样做之前,我学到了一个艰难的方法,即您不应该在正在运行的应用程序下创建/删除文件夹,否则您将导致应用程序池被回收。因此,请确保您正在服务器上的其他位置创建目录。(希望你有这个权限)

在你这么做之前,我学到了一个艰难的方法,那就是你不应该在正在运行的应用程序下创建/删除文件夹,否则你会导致你的应用程序池被回收。因此,请确保您正在服务器上的其他位置创建目录。(希望你有这个权限)

你这里的问题是你检测物品是否存在的算法。基本上,您的代码:

for (int i = 0; i < TreeView1.Nodes.Count; i++)            
{                
    if (TreeView1.Nodes[i].Text == TextBox1.Text)
                    found += 1+i;            
}
if (found > 0)            
{                
   tnode.Text = TextBox1.Text + found.ToString();      
}            
else            
{                
   tnode.Text = TextBox1.Text;            
}
for(int i=0;i0)
{                
tnode.Text=TextBox1.Text+found.ToString();
}            
其他的
{                
tnode.Text=TextBox1.Text;
}
让我们来看看这个。用户提交代码经过的NewFolder,但找不到任何名为NewFolder的节点,因此它将节点设置为NewFolder

现在,用户再次为NewFolder单击add,这次它会找到NewFolder,因此新名称将成为NewFolder1

现在,用户再次为NewFolder单击add,这次它会找到NewFolder,因此新名称将成为NewFolder1

您正在比较的if-TreeView1.Nodes[i].Text==TextBox1.Text,哪一个节点将有此名称。您需要去掉名称的数字部分


如果您使用像NewFolder(1)这样的命名约定,那么您可以轻松做到这一点。但是根据您在那里的代码,节点的名称将是NewFolder1

这里的问题是您检测项目是否存在的算法。基本上,您的代码:

for (int i = 0; i < TreeView1.Nodes.Count; i++)            
{                
    if (TreeView1.Nodes[i].Text == TextBox1.Text)
                    found += 1+i;            
}
if (found > 0)            
{                
   tnode.Text = TextBox1.Text + found.ToString();      
}            
else            
{                
   tnode.Text = TextBox1.Text;            
}
for(int i=0;i0)
{                
tnode.Text=TextBox1.Text+found.ToString();
}            
其他的
{                
tnode.Text=TextBox1.Text;
}
让我们来看看这个。用户提交代码经过的NewFolder,但找不到任何名为NewFolder的节点,因此它将节点设置为NewFolder

现在,用户再次为NewFolder单击add,这次它会找到NewFolder,因此新名称将成为NewFolder1

现在,用户再次为NewFolder单击add,这次它会找到NewFolder,因此新名称将成为NewFolder1

您正在比较的if-TreeView1.Nodes[i].Text==TextBox1.Text,哪一个节点将有此名称。您需要去掉名称的数字部分


如果您使用像NewFolder(1)这样的命名约定,那么您可以轻松做到这一点。但是根据您在那里的代码,节点的名称将是NewFolder1,您的文本比较已关闭。由于您可能已将编号添加到同一父节点下的前一个节点,因此只会遇到一次新名称

它应该是这样的:

if (TreeView1.Nodes[i].Text.StartsWith(TextBox1.Text))
    found++

您的文本比较已关闭。由于您可能已将编号添加到同一父节点下的前一个节点,因此只会遇到一次新名称

它应该是这样的:

if (TreeView1.Nodes[i].Text.StartsWith(TextBox1.Text))
    found++

此代码未给出所需的输出。如果我输入Jack作为文件夹名称6次,则序列将出现。Jack,Jack(1),Jack(3),Jack(6),Jack(10),Jack(15)这绝对是错误的输出。在您的编码子文件夹索引中,hi从1开始,它应该从2开始。如果Jack是父文件夹,则Michael是子文件夹,它应该位于Jack Michael、Michael(2)、Michael(3)、Michael(4)下。如果我再添加一个父文件夹,例如Simon n,则其子文件夹是NewFolder、NewFolder(2)、NewFolder(3),NewFolder(4),NewFolder(5)…我再次选择父文件夹Jack并输入Michael作为子文件夹,然后这个Michael应该位于Jack Michael(5)之下。但是它的索引在NewFolder(5)之后是Michael(6)。您应该只计算父文件夹中创建子文件夹的节点数。简单索引也不能解决代码中的其他问题,因为我们没有您的所有代码,也没有您想要的确切逻辑。若要正确执行,您仍然必须自己执行。此代码没有提供所需的输出。如果我在系列即将到来的6次中输入Jack作为文件夹名称。Jack,Jack(1),Jack(3),Jack(6),Jack(10),Jack(15)这绝对是错误的输出。在您的编码子文件夹索引中,hi从1开始,它应该从2 ex开始。如果Jack是父文件夹,则Michael是子文件夹,它应该位于Jack Michael、Michael(2)、Michael(3)、Michael(4)下。如果我再添加一个父文件夹,例如Simon n,则其子文件夹是NewFolder、NewFolder(2)、NewFolder(3)、New