Я прихожу на С# 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]}
Вы должны предоставить виртуальный путь относительно веб-приложения при использовании 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"]
приходит пустым. Убедись, что:
message
name
form
с runat=server
Request.Form["message"]
неправильным способом доступа к информации, отправленной таким образом?