CS0120:需要对象引用

时间:2010-07-14 14:48:32

标签: c# asp.net compiler-errors

将表单提交到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>

我该如何解决?

谢谢!

2 个答案:

答案 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的成员,并且发生此特定错误是因为您尝试从嵌套类型的静态方法访问它。