共用方式為


VirtualDirectory(String) 建構函式

定義

初始化 VirtualDirectory 類別的新執行個體。

protected:
 VirtualDirectory(System::String ^ virtualPath);
protected VirtualDirectory (string virtualPath);
new System.Web.Hosting.VirtualDirectory : string -> System.Web.Hosting.VirtualDirectory
Protected Sub New (virtualPath As String)

參數

virtualPath
String

這個執行個體所表示之資源的虛擬路徑。

範例

下列程式碼範例是建構函式的實作 VirtualDirectory ,可從 DataSet 自訂 VirtualPathProvider 物件所提供的 物件擷取虛擬檔案資訊。 它包含 GetData 用來填入 VirtualDirectory 實例的方法。 如需執行範例所需的完整程式碼,請參閱類別概觀的 VirtualDirectory 範例一節。

public SampleVirtualDirectory(string virtualDir, SamplePathProvider provider)
  : base(virtualDir)
{
  spp = provider;
  GetData();
}

protected void GetData()
{
  DataSet ds = spp.GetVirtualData();

  // Clean up the path to match data in resource file.
  string path = VirtualPath.Replace(HostingEnvironment.ApplicationVirtualPath, "");
  path = path.TrimEnd('/');

  // Get the virtual directory from the resource table.
  DataTable dirs = ds.Tables["resource"];
  DataRow[] rows = dirs.Select(
    String.Format("(name = '{0}') AND (type='dir')", path));

  // If the select returned a row, the directory exists.
  if (rows.Length > 0)
  {
    exists = true;

    // Get children from the resource table.
    // This technique works for small numbers of virtual resources.
    //   Sites with moderate to large numbers of virtual
    //   resources should choose a method that consumes fewer
    //   computer resources.
    DataRow[] childRows = dirs.Select(
      String.Format("parentPath = '{0}'", path));

    foreach (DataRow childRow in childRows)
    {
      string childPath = (string)childRow["path"];

      if (childRow["type"].ToString() == "dir")
      {
        SampleVirtualDirectory svd = new SampleVirtualDirectory(childPath, spp);
        children.Add(svd);
        directories.Add(svd);
      }
      else
      {
        SampleVirtualFile svf = new SampleVirtualFile(childPath, spp);
        children.Add(svf);
        files.Add(svf);
      }
    }
  }
}
Public Sub New(ByVal virtualDir As String, ByVal provider As SamplePathProvider)
  MyBase.New(virtualDir)
  spp = provider
  GetData()
End Sub

Protected Sub GetData()
  ' Get the data from the SamplePathProvider.
  Dim spp As SamplePathProvider
  spp = CType(HostingEnvironment.VirtualPathProvider, SamplePathProvider)

  Dim ds As DataSet
  ds = spp.GetVirtualData

  ' Clean up the path to match data in resource file.
  Dim path As String
  path = VirtualPath.Replace(HostingEnvironment.ApplicationVirtualPath, "")
  Dim trimChars() As Char = {"/"c}
  path = path.TrimEnd(trimChars)

  ' Get the virtual directory from the resource table.
  Dim dirs As DataTable
  dirs = ds.Tables("resource")
  Dim rows As DataRow()
  rows = dirs.Select( _
    String.Format("(name = '{0}') AND (type='dir')", path))

  ' If the select returned a row, the directory exits.
  If (rows.Length > 0) Then
    existsValue = True

    ' Get the children from the resource table.
    ' This technique works for small numbers of virtual resources.
    '  Sites with moderate to large numbers of virtual
    '  resources should choose a method that consumes fewer
    '  computer resources.
    Dim childRows As DataRow()
    childRows = dirs.Select( _
      String.Format("parentPath = '{0}'", path))

    For Each childRow As DataRow In childRows
      Dim childPath As String
      childPath = CType(childRow("path"), String)

      If (childRow("type").ToString = "dir") Then
        Dim svd As New SampleVirtualDirectory(childPath, spp)
        childrenValue.Add(svd)
        directoriesValue.Add(svd)
      Else
        Dim svf As New SampleVirtualFile(childPath, spp)
        childrenValue.Add(svf)
        directoriesValue.Add(svf)
      End If
    Next

  End If
End Sub

適用於

另請參閱