作为初学者,我正处于学习 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 将为每个进入的请求创建一个此类的新实例,这将使共享信息变得更加容易,例如 Request
、Response
、上下文
,...针对特定请求,因此您不必考虑将所有这些结合在一起。
关于c# - 非静态字段方法或属性需要对象引用 'page.request',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71908072/