#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;