Предупреждение текстового поля ASP.NET - PullRequest
3 голосов
/ 14 февраля 2011

Я бы хотел, чтобы в моем веб-приложении на C # было предупреждение о текстовом поле, если файл существует на сервере.Есть идеи?Новичок в C # здесь.Так, например, если у меня есть text.txt (и я знаю, что это всегда будет text.txt ), что кто-то поместит его в папку на файловом сервере, мое веб-приложениестраница предупредит меня, используя таймер (или что-то в этом роде).

Ответы [ 5 ]

2 голосов
/ 14 февраля 2011

Ваше веб-приложение работает на веб-сервере, который, вероятно, находится где-то в закрытой серверной комнате.Отображение всплывающего диалогового окна там никому не поможет, потому что никто его не увидит.

Вам нужно показать диалоговое окно на стороне клиента (т. Е. В веб-браузере, который смотрит наваша веб-страница).Чтобы сделать это, вы должны использовать JavaScript;в частности, функция alert .

Но теперь у вас возникла проблема со связью: ваш клиентский JavaScript должен уметь спрашивать сервер, существует ли файл.Вероятно, лучше всего сделать таймер на JavaScript ( setInterval ), который отправляет AJAX-запрос на сервер.У вас будет «страница» на сервере - какой-нибудь файл .aspx, - который вместо HTML возвращает некоторый простой код (например, «0» или «1»), который указывает, существует ли файл.Затем ваш JavaScript может загрузить содержимое этой «страницы» в переменную, проверить переменную и узнать, показывать ли предупреждение.

Что касается того, как сделать AJAX, вам нужно использовать библиотеку, подобную JQuery .Выберите библиотеку, если вы еще этого не сделали, а затем прочитайте ее документы, чтобы узнать, как выполнять запросы AJAX.

1 голос
/ 14 февраля 2011
// TODO: Read up on FileSystemWatcher

FileSystemWatcher watcher = new FileSystemWatcher();

watcher.Path = @"C:\MyDirectory";
watcher.Changed += new FileSystemEventHandler(watcher_Changed);
watcher.Deleted += new FileSystemEventHandler(watcher_Deleted);
watcher.Renamed += new RenamedEventHandler(watcher_Renamed)
watcher.Created += new FileSystemEventHandler(watcher_Created);

watcher.EnableRaisingEvents = true;
watcher.Filter = "*.txt"; // could also set it to "text.txt" or "*"

void watcher_Changed(object sender, System.IO.FileSystemEventArgs e))
{
    MessageBox.Show("Zomg " + e.FullPath +" has been changed!!");
}
private void fileWatcher_Renamed(object sender, System.IO.RenamedEventArgs e)
{
    MessageBox.Show(e.OldFullPath + " was renamed to " + e.FullPath);
}
private void fileWatcher_Deleted(object sender, System.IO.FileSystemEventArgs e)
{
    MessageBox.Show(e.FullPath + " was deleted!");
}
private void fileWatcher_Created(object sender, System.IO.FileSystemEventArgs e)
{
    MessageBox.Show(e.FullPath + " was created!");
}
1 голос
/ 14 февраля 2011

Попробуйте это

string path = "C:\\TestFolder\\......."; // Path

DirectoryInfo directory = new DirectoryInfo(path);

 foreach (FileInfo file in directory.GetFiles())
        {

                if (file.Name == text.txt)
                {
                    MessMessageBox.Show("Text file exists");
                }

        }

Надеюсь, это поможет

1 голос
/ 14 февраля 2011

Для этой цели вы можете использовать класс FileSystemWatcher .Но это должно выполняться как клиентское приложение (приложение или служба Windows Forms), а не из веб-приложения (вы не можете получить доступ к клиентскому компьютеру из браузера).

0 голосов
/ 14 февраля 2011

Лучший способ проверить, существует ли отдельный файл, был бы File.Exists:

if (File.Exists("c:\\test.txt"))
  //inform user
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...