2013-06-26 3 views
0

Я пытаюсь выяснить, как я могу позволить пользователю выбрать каталог, а не просто выбирать файлы. Меня не интересуют файлы, просто каталог. Есть ли способ позволить пользователю сделать это? Единственный способ, который я понял, - вернуть список дисков, доступных на компьютере, на котором работает приложение.Как разрешить пользователю выбирать исходный каталог?

Это не совсем то, что мне нужно, поскольку все сетевые компьютеры не отображаются - только диски, которые на самом деле являются , сопоставлены. Все, что мне нужно, это позволить пользователю выбрать исходный каталог и сохранить этот путь к серверу (\\my-server-name\path\to\source), чтобы служба, которую я запускал, обработает ее в запланированное время.

Я не уверен, что код, который у меня есть, может быть изменен для отображения всех сетевых компьютеров или если есть путь/библиотека, позволяющие каталогам браузера пользователя на сервере, но я застрял. Есть ли способ сделать это?

return (from info in driveInfo 
    where info.DriveType == DriveType.Network 
    select new Drive 
    { 
     Name = info.Name, Type = info.DriveType, 
     RootDirectory = info.RootDirectory.Name, IsReady = info.IsReady, 
    }).ToList(); 

Любые решения non-C# тоже будут работать, если они еще могут быть интегрированы в колодец. Не уверен, что NodeJS или Html5 или Javascript может это сделать?

+0

Что это нужно делать с ASP.NET? – Dai

+0

Это приложение ASP.NET, поэтому я понял, что это актуально. Нет? – Cody

+0

Вы хотите, чтобы приложение ASP.NET просматривало все сетевые компьютеры, видимые на веб-сервере, и отображало их конечным пользователям? – Paparazzi

ответ

0

Это не прекрасное решение - и это очень далекое от быстрого, но если я правильно читаю ваш вопрос, это соответствует тому, что вы ищете (сделано на VB.NET).

Dim fbd1 As New FolderBrowserDialog 
    Dim type As Type = FolderBrowserDialog1.GetType 
    Dim fieldInfo As Reflection.FieldInfo = type.GetField("rootFolder", Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.Instance) 
    fieldInfo.SetValue(fbd1, DirectCast(18, Environment.SpecialFolder)) 
    fbd1.ShowDialog() 

Это диалог FolderBrowserDialog с "Network" в корневой папке. Как только вы нажмете «Сеть», он будет расширяться, чтобы отобразить все сетевые устройства, которые вы можете просмотреть. На моем компьютере это было довольно медленно.

Это немного модифицированный раствор из того, что я нашел здесь - http://www.codeproject.com/Articles/20547/How-to-Browse-Network-Folders-using-Folder-Dialog