‘Request’ does not exist in the current context

Bila anda menulis kode untuk mendapatkan absolute directory seperti berikut:

String filePath_1 = Request.PhysicalApplicationPath + @"MyDir\";

pada Page_Load method di dalam (misalnya) default.aspx.cs, kode tersebut akan bekerja dengan baik. Tetapi bila anda menaruh kode tersebut di dalam sebuah class file, anda akan mendapatkan error: The name ‘Request’ does not exist in the current context walaupun sudah mengimpor System.Web. Untuk mengatasi error tersebut kita harus menulis class yang memiliki anggota Request tersebut dengan lengkap seperti berikut di bawah ini:

// beberapa using ... yang lain
using System.Web;

namespace MyNameSpace
{
  class MyClass_1
  {
    String filePath = HttpContext.Current.Request.PhysicalApplicationPath + @"MyDir\";
    // atau 
    // String filePath = System.Web.HttpContext.Current.Request.PhysicalApplicationPath + @"MyDir\";

    // beberapa vars, methods atau functions lain
  }

  class MyClass_2
  {
    // beberapa vars, methods atau functions  lain
  }
}

Tambahan:

System.Web ternyata adalah namespaces, sehingga HttpContext (yang merupakan member dari System.Web) dapat di akses langsung. Namun, HttpContext.Current adalah class, sehingga Request (yang merupakan member dari HttpContext.Current) tidak dapat diakses langsung kecuali melalui HttpContext.Current.Request. Sebenarnya konsep using namespaces di C# mirip dengan use unit di delphi, kenapa baru sadar sekarang. Dan using di C# tidak sama dengan import di Java.

Ditulis dalam ASP.NET. Leave a Comment »