Вы можете использовать элемент управления DNN File Picker или изменить его логику.
Исходный код, доступный в Codeplex, содержит примеры получения папок для пользователя и пример получения файлов для папки (для пользователя):
http://dotnetnuke.codeplex.com/SourceControl/changeset/view/58672#612642
Private Sub LoadFolders()
cboFolders.Items.Clear()
'Add Personal Folder
If UsePersonalFolder Then
Dim userFolder As String = FileSystemUtils.GetUserFolderPath(UserController.GetCurrentUserInfo().UserID)
Dim userFolderItem As ListItem = cboFolders.Items.FindByValue(userFolder)
If userFolderItem IsNot Nothing Then
userFolderItem.Text = Utilities.GetLocalizedString("MyFolder")
Else
'Add Dummy Folder
cboFolders.Items.Add(New ListItem(Utilities.GetLocalizedString("MyFolder"), userFolder))
End If
Else
Dim folders As ArrayList = FileSystemUtils.GetFoldersByUser(PortalId, ShowSecure, ShowDatabase, Permissions)
For Each folder As FolderInfo In folders
Dim folderItem As New ListItem
If folder.FolderPath = Null.NullString Then
folderItem.Text = Utilities.GetLocalizedString("PortalRoot")
Else
folderItem.Text = folder.DisplayPath
End If
folderItem.Value = folder.FolderPath
cboFolders.Items.Add(folderItem)
Next
End If
End Sub
и
Private Function GetFileList(ByVal NoneSpecified As Boolean, ByVal Folder As String) As ArrayList
Dim fileList As ArrayList
If IsHost Then
fileList = Globals.GetFileList(Null.NullInteger, FileFilter, NoneSpecified, cboFolders.SelectedItem.Value)
Else
fileList = Globals.GetFileList(PortalId, FileFilter, NoneSpecified, cboFolders.SelectedItem.Value)
End If
Return fileList
End Function