Почему я получаю ошибку при использовании HttpContext?

#c# #html #xml

Вопрос:

Я работаю над кодом для создания веб-сайта с песнями, но при использовании этого кода я получаю ошибку:

 ds.ReadXml(HttpContext.Current.Server.MapPath(filepath));
 

код ошибки: CS0103: Имя «HttpContext» не существует в текущем контексте

Мой код SongMethods.cs таков:

 using System.Data;
using System;
/// <summary>
/// Summary description for Class1
/// </summary>
public class Pokoes
{
public Pokoes()
{
    //
    // TODO: Add constructor logic here
    //
}
public DataSet GetAllSongs(string filepath)
{
    DataSet ds =new DataSet("playlist");

    DataTable dtSongs =new DataTable("song");

    DataColumn dcId = new DataColumn("id");
    DataColumn dcTitle = new DataColumn("title");
    DataColumn dcArtist = new DataColumn("artist");
    DataColumn dcYear = new DataColumn("year");
    DataColumn dcGenre = new DataColumn("genre");
    DataColumn dcFile = new DataColumn("file");

    dtSongs.Columns.Add(dcId);
    dtSongs.Columns.Add(dcTitle);
    dtSongs.Columns.Add(dcArtist);
    dtSongs.Columns.Add(dcYear);
    dtSongs.Columns.Add(dcGenre);
    dtSongs.Columns.Add(dcFile);
    ds.Tables.Add(dtSongs);

    ds.ReadXml(HttpContext.Current.Server.MapPath(filepath));

    return ds;
}

}
 

Мой код индекса таков:

 <!DOCTYPE html>

@using System;
@using XmlCrud.App_Code;

@{
SongMethods mySongMethods = new SongMethods();
string filePath = Server.MapPath(@"~App_Dataplaylist.xml");
DataSet ds = mySongMethods.GetAllSongs(filePath);
}
<html>
<head>
<title>XmlCrud</title>
<link href="~/Content/bootstrap.min.css" rel"stylesheet" />
<script src="~/Scripts/bootstrap.min.js"></script>
</head>
<body>
<br /><br />
      <table class="table-bordered">
          <tr>
            <th>Id</th>
            <th>Title</th>
            <th>Artist</th>
            <th>Year</th>
            <th>Genre</th>
            <th>File</th>
           </tr>

          @foreach (DataRow dr in ds.Tables["song"].Rows)
          {
              <tr>
                  <td>@dr["id"]</td>
                  <td>@dr["title"]</td>
                  <td>@dr["artist"]</td>
                  <td>@dr["year"]</td>
                  <td>@dr["genre"]</td>
                  <td>@dr["file"]</td>
              </tr>
          }
      </table>
 </body>
 </html>
 

Мой playlist.xml является:

 <?xml version="1.0" encoding="utf-8"?>
<playlist>
 <song>
<id>1</id>
<title>if i can't</title>
<artist>50 cents</artist>
<year>2005</year>
<genre>rap</genre>
<file>link</file>
</song>
<song>
<id>2</id>
<title>time in a bottle</title>
<artist>jimmy croche</artist>
<year>1973</year>
<genre>accoustic</genre>
<file>link</file>
</song>
</playlist>
 

мы попросили одного из наших учителей, но он не смог помочь нам с этой проблемой в данный момент, поэтому мы надеемся, что некоторые люди здесь смогут.

Комментарии:

1. Ошибка говорит вам, что вы нигде не объявляли переменную HttpContext , чтобы система знала, что это такое. Если у вас есть пример приложения , которое уже успешно реализовано HttpContext , попробуйте просмотреть его, чтобы узнать, где определена переменная, и посмотреть, сможете ли вы это повторить. Или попробуйте прочитать документацию по HttpContext. Или попробуйте поискать на github фрагменты кода, которые приведут вас к проекту с полезными примерами кода.

2. @NateW Вы бы не стали объявлять HttpContext, за исключением, возможно, как часть модульного теста. Это пример, предоставленный ASP.NET рамки.

3. Спасибо @mason, я в целом знал, что означает сообщение об ошибке, но я не знаком с этим аспектом программирования, поэтому я не мог предоставить правильное решение, просто интерпретацию.

4. Должно быть : ds.ReadXml(путь к файлу); Сопоставление выполняется в HTML и не требует повторного выполнения.

Ответ №1:

HttpContext является частью Системы.Веб-пространство имен, поэтому добавьте

 using System.Web;