将表单提交到savetext.aspx操作文件时出现此错误:
Compiler Error Message: CS0120: An object reference is required for the nonstatic field, method, or property 'System.Web.UI.Page.Request.get'
在这一行:
string path = "/txtfiles/" + Request.Form["file_name"];
整个代码:
<%@ Page Language="C#" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.IO" %>
<script runat="server">
class Test
{
public static void Main()
{
string path = "/txtfiles/" + Request.Form["file_name"];
if (!File.Exists(path))
{
using (StreamWriter sw = File.CreateText(path))
{
sw.WriteLine(request.form["seatsArray"]);
sw.WriteLine("");
}
}
using (StreamReader sr = File.OpenText(path))
{
string s = "";
while ((s = sr.ReadLine()) != null)
{
Console.WriteLine(s);
}
}
}
}
</script>
我该如何解决?
谢谢!
答案 0 :(得分:5)
删除此Test
类以及静态Main
方法,并将其替换为Page_Load
实例方法,如下所示:
<%@ Page Language="C#" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.IO" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
string path = "/txtfiles/" + Request.Form["file_name"];
if (!File.Exists(path))
{
using (StreamWriter sw = File.CreateText(path))
{
sw.WriteLine(Request.Form["seatsArray"]);
sw.WriteLine("");
}
}
using (StreamReader sr = File.OpenText(path))
{
string s = "";
while ((s = sr.ReadLine()) != null)
{
Response.Write(s);
}
}
}
</script>
此外,您可能希望输出到HttpResponse而不是Web应用程序中的控制台。另一个评论是关于你的文件路径:"/txtfiles/"
,NTFS通常不喜欢这样的模式。
答案 1 :(得分:1)
Darin Dimitrov给了你一个正确方向的提示,但我想回答问题为什么发生了这个错误。正常错误应该是:
“请求”这个名称不存在于 当前的背景
这是因为对于每个aspx
文件,创建一个默认继承自Page
的类。 aspx
文件中定义的所有新类都成为该文件的嵌套类。 Request
是类Page
的成员,并且发生此特定错误是因为您尝试从嵌套类型的静态方法访问它。