如何在C#ASP.NET页面中编写文本文件?

时间:2014-12-18 07:33:33

标签: c# asp.net

我从Ruby和PHP进入C#ASP.NET,我很享受它的一些元素,但我发现某些事情难以实现。如果有人能帮助我让这一点好起来的话,我会非常感激。

我正在尝试在POST请求中发送一些文本,将其转义为HTML,然后将其写入文本文件。

所以我仔细查看,阅读一下,然后尝试:

<% 
    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]}

1 个答案:

答案 0 :(得分:2)

使用Server.MapPath时,您必须使用特殊字符~提供相对于Web应用程序的虚拟路径,该特殊字符是Web应用程序根目录的快捷方式。现在,最简单的方法是......

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

这假设请求实际上包含&#34;消息&#34;形式变量。请注意,如果该文件不存在,则此方法将创建一个新文件;如果存在,则将覆盖该文件。

但是,在ASP.NET Web窗体中,我们通常使用服务器控件,例如TextBox,如果在发布页面时将消息设置为文本框,那么在OOP中检索此消息的更好方法是风格将是......

TextBox_ID.Text;

其中TextBox_ID是TextBox的ID

修改

如果Request.Form["message"]为空。确保:

  1. 有一个名为message
  2. 的文本输入元素
  3. 没有其他元素具有相同的name属性
  4. 输入元素位于具有form属性
  5. runat=server标记内
  6. 您要回发页面而不是发出GET请求