CS0120: ссылка на объект обязательна - PullRequest
1 голос
/ 14 июля 2010

Получение этой ошибки при отправке формы в файл действий 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 ]

5 голосов
/ 14 июля 2010

Удалите этот класс 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 вместо консоли в веб-приложении. Еще одно замечание касается вашего пути к файлу: "/txtfiles/", NTFS обычно не любит такие шаблоны.

1 голос
/ 14 июля 2010

Дарин Димитров дал вам подсказку в правильном направлении, но я просто хочу дать ответ на вопрос , почему происходит эта ошибка. Нормальная ошибка должна быть:

Имя «Запрос» не существует в текущий контекст

Это происходит потому, что для каждого файла aspx создается класс, который наследуется от Page по умолчанию. Все новые классы, определенные в файле aspx, становятся вложенными классами этого. Request является членом класса Page, и эта конкретная ошибка возникает из-за того, что вы пытаетесь получить к нему доступ из статического метода вложенного типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...