CS0120:需要对象引用

Ice*_*gon 1 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'
Run Code Online (Sandbox Code Playgroud)

在这一行:

string path = "/txtfiles/" + Request.Form["file_name"];
Run Code Online (Sandbox Code Playgroud)

整码:

<%@ 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>
Run Code Online (Sandbox Code Playgroud)

我如何解决它?

谢谢!

Dar*_*rov 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>
Run Code Online (Sandbox Code Playgroud)

您也可能希望输出到HttpResponse而不是Web应用程序中的控制台.另一个评论是关于你的文件路径:"/txtfiles/",NTFS通常不喜欢这样的模式.