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

如何在C#ASP.NET页面中编写文本文件?,c#,asp.net,C#,Asp.net,我是从Ruby和PHP来到C#ASP.NET的,我很喜欢其中的一些元素,但发现有些东西很难实现。这与我的想法有点不同,如果有人能帮我把这一点准备好并运行起来,我将不胜感激 我试图获取POST请求中发送的一些文本,HTML转义它,然后将其写入文本文件 所以我查了一下,读了一点,然后试着: <% System.IO.StreamWriter file = new System.IO.StreamWriter(Server.MapPath(@"./messager.txt"));

我是从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();
%>

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

System.IO.File.WriteAllText(Server.MapPath("~\messager.txt"), Request.Form["message"]);
这是假设请求实际上包含“message”表单变量。请注意,如果文件不存在,此方法将创建一个新文件,如果文件确实存在,则将覆盖该文件

但是,在ASP.NET Web表单中,我们通常使用服务器控件,例如
文本框
,如果在发布页面时将消息设置为文本框,则以OOP样式检索此消息的更好方法是

TextBox_ID.Text;
其中
TextBox\u ID
是文本框的ID

编辑 如果
Request.Form[“message”]
为空。确保:

  • 有一个名为
    message
  • 没有其他元素具有相同的
    名称
    属性
  • 输入元素位于带有
    runat=server
    属性的
    form
    标记内
  • 您正在发回页面,而不是发出GET请求

  • 您是否尝试在路径中使用反斜杠(\)而不是正斜杠(/)?出现了什么错误?@FabrizioAccatino我没有收到错误;文本文件根本没有被写入。@dotNET我刚刚尝试过,不幸的是没有改变。值得指出的是,
    System.IO.File.ReadAllText(Server.MapPath(@“~\messager.txt”)
    确实有效,所以我认为路径不是问题。我建议在代码隐藏中这样做,因为它不是ruby、php或asp。asp.net不适合这样使用。谢谢你的回复,我很感激。我尝试过使用您提供的代码示例,但不起作用;没有任何内容写入文本文件。这让我觉得我发布数据的方式有问题。我正在发送一个简单的HTML表单,其中一个名为“message”的文本输入元素被提交到该ASP.NET代码嵌入的页面。
    Request.Form[“message”]
    是否不是访问以这种方式发送的信息的正确方法?
    TextBox_ID.Text;