0

ツリービューを作成していますが、ツリービューディレクトリのファイルノードをクリックしてファイルを開きたいです。私がここでやったこと:

foreach (FileInfo File in currentDir.GetFiles())
        {
            TreeNode node = new TreeNode(File.Name, File.FullName);
            node.SelectAction = TreeNodeSelectAction.SelectExpand;
            node.PopulateOnDemand = false;
            node.NavigateUrl = ResolveClientUrl(File.FullName); 
            node.ChildNodes.Add(node);
            currentNode.ChildNodes.Add(node);

        }  

残念ながら、html を確認すると、次のようにレンダリングされます。 %252006.39.15%2520PM.wmv"

ディレクトリはローカルであるため、これにアクセスできません。この問題の回避策を教えてください。

4

1 に答える 1

0

まず、ディレクトリの内容は、ローカル以外で利用可能である必要があります。たとえば、IISで設定されたWebサイトのルートの下のディレクトリ、またはどこかの仮想ディレクトリ内です。

次に、絶対ローカルパスを使用してWebページを介してファイルを提供することはできません。これらのURLは、Webサイトのドメインを基準にして作成する必要があります。

したがって、原則は絶対パスを取得し、それを仮想パスまたはURLに「マップ」することです。その質問への回答は、あちこちで回答されます。たとえば、ここに1つあります。

ResolveClientUrlこの場合は機能しません...

このメソッドによって返されるURLは、コントロールがインスタンス化されるソースファイルを含むフォルダーに関連しています。

そして、あなたのファイルは(Webアプリケーションに関する限り)任意のディレクトリにあるように見えます。

これを行うために必要な情報があり、このようなものがどこにあるかについての知識があり、アプリケーションはそれ自体がどこにあるかについての知識を公開します(たとえば、ApplicationPath要求コンテキストなど)。

于 2012-09-26T15:06:17.787 に答える