Как мне написать текстовый файл на странице C # ASP.NET?

1

Я прихожу на С# ASP.NET из Ruby и PHP, и мне нравятся некоторые его элементы, но я нахожу определенные вещи трудными для достижения. Это немного по-другому, чтобы окунуться в голову, и я был бы очень признателен, если бы кто-то помог мне запустить этот бит.

Я пытаюсь взять какой-то текст, отправленный в POST-запросе, HTML-escape-код, а затем записать его в текстовый файл.

Поэтому я смотрю, читаю немного, и попробую:

<% 
    System.IO.StreamWriter file = new System.IO.StreamWriter(Server.MapPath(@"./messager.txt"));
    file.WriteLine(Request.Form["message"]);
    file.Close();
%>

Не выполняйте HTML-экранирование, просто пытайтесь написать текстовый файл.

Однако это не работает; он не видит ошибок, которые я вижу, но ничего не делает, текстовый файл вообще не написан. Я исследовал методы и не могу понять, почему. Мне бы очень понравилась помощь.

Если это помогает, здесь работает Ruby-код для того, что я пытаюсь сделать:

File.open "messager.txt", "w" {|f| f.puts h params[:message]}
  • 2
    Вы пробовали обратную косую черту (\) в пути вместо прямой косой черты (/)?
  • 1
    Какую ошибку вы получаете?
Показать ещё 3 комментария
Теги:

1 ответ

2

Вы должны предоставить виртуальный путь относительно веб-приложения при использовании Server.MapPath с использованием специального символа ~ который является ярлыком для корневого каталога веб-приложения. Теперь самый простой способ сделать это:

System.IO.File.WriteAllText(Server.MapPath("~\messager.txt"), Request.Form["message"]);

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

Однако в ASP.NET Web Forms мы обычно используем серверные элементы управления, такие как TextBox, если при отправке страницы на сообщение установлено текстовое поле, тогда лучший способ получить это сообщение в стиле OOP будет...

TextBox_ID.Text;

где TextBox_ID - это идентификатор TextBox

редактировать

если Request.Form["message"] приходит пустым. Убедись, что:

  1. там текстовый элемент ввода с именем message
  2. нет другого элемента с одинаковым атрибутом name
  3. элемент ввода находится внутри тега form с runat=server
  4. вы отправляете назад страницу вместо выдачи запроса GET
  • 0
    Спасибо за ваш ответ, я ценю это. Я пытался использовать предоставленный вами пример кода, но он не работает; в текстовый файл ничего не пишется. Это заставляет меня думать, что что-то не так с тем, как я публикую данные. Я отправляю простую HTML-форму, где элемент ввода текста с именем 'message' отправляется на страницу, на которой встроен код ASP.NET. Является ли Request.Form["message"] неправильным способом доступа к информации, отправленной таким образом?
  • 0
    @GreenTriangle проверить мои правки

Ещё вопросы

Сообщество Overcoder
Наверх
Меню