非静态字段方法需要对象引用或 属性 'page.request'
an object reference is required for the non-static field method or property 'page.request'
作为初学者,我正处于学习 ASP.NET Webforms 的初始阶段,我正在处理这段代码,我需要从静态方法中调用 Request.QueryString
。但我无法做到这一点,而是抛出一个编译错误
这是我的代码块
[System.Web.Services.WebMethod]
public static string GetProductImgList(string ProductCode)
{
try
{
string ProductId = Request.QueryString["ID"].ToString(); //error
string BatchId = Request.QueryString["Batch"].ToString();//error
string UserId = Request.QueryString["UID"].ToString();//error
dalOnlineShop objdalOnlineShop = new dalOnlineShop();
DataTable dt = objdalOnlineShop.GetProductAllImgs(ProductCode);
string ImgNames = "";
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows.Count == i + 1)
{
ImgNames += dt.Rows[i]["SmallImgPath"].ToString() + ",";
ImgNames += dt.Rows[i]["ImgPath"].ToString();
}
else
{
ImgNames += dt.Rows[i]["SmallImgPath"].ToString() + ",";
ImgNames += dt.Rows[i]["ImgPath"].ToString() + ",";
}
}
return ImgNames;
}
catch (Exception ex) { }
return "";
}
您的问题是您将此方法设为静态。静态意味着它不依赖于特定实例。此代码引用的 Request
属性 是一个实例 属性。这意味着此 属性(可以)对每个实例具有不同的值。
ASP.NET 将为每个进入的请求创建此 class 的新实例,这将使共享信息变得更加容易,例如 Request
、Response
、 Context
, ...针对特定请求,因此您不必考虑将所有这些捆绑在一起。
作为初学者,我正处于学习 ASP.NET Webforms 的初始阶段,我正在处理这段代码,我需要从静态方法中调用 Request.QueryString
。但我无法做到这一点,而是抛出一个编译错误
这是我的代码块
[System.Web.Services.WebMethod]
public static string GetProductImgList(string ProductCode)
{
try
{
string ProductId = Request.QueryString["ID"].ToString(); //error
string BatchId = Request.QueryString["Batch"].ToString();//error
string UserId = Request.QueryString["UID"].ToString();//error
dalOnlineShop objdalOnlineShop = new dalOnlineShop();
DataTable dt = objdalOnlineShop.GetProductAllImgs(ProductCode);
string ImgNames = "";
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows.Count == i + 1)
{
ImgNames += dt.Rows[i]["SmallImgPath"].ToString() + ",";
ImgNames += dt.Rows[i]["ImgPath"].ToString();
}
else
{
ImgNames += dt.Rows[i]["SmallImgPath"].ToString() + ",";
ImgNames += dt.Rows[i]["ImgPath"].ToString() + ",";
}
}
return ImgNames;
}
catch (Exception ex) { }
return "";
}
您的问题是您将此方法设为静态。静态意味着它不依赖于特定实例。此代码引用的 Request
属性 是一个实例 属性。这意味着此 属性(可以)对每个实例具有不同的值。
ASP.NET 将为每个进入的请求创建此 class 的新实例,这将使共享信息变得更加容易,例如 Request
、Response
、 Context
, ...针对特定请求,因此您不必考虑将所有这些捆绑在一起。