c# - 非静态字段方法或属性需要对象引用 'page.request'

标签 c# asp.net

作为初学者,我正处于学习 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 将为每个进入的请求创建一个此类的新实例,这将使共享信息变得更加容易,例如 RequestResponse上下文,...针对特定请求,因此您不必考虑将所有这些结合在一起。

关于c# - 非静态字段方法或属性需要对象引用 'page.request',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71908072/

相关文章:

c# - Swagger for Asp.Net Mvc 网站

c# - 如何在 C# 中创建自定义锁定语句?

c# - Webdriver 管理器和 c#

asp.net - 我在 IIS7 中缺少什么?

asp.net - 大文件上传到asp.net MVC

c# - Response.WriteAsync 和返回字符串有什么区别

asp.net - 将样式应用于 asp.net 中的菜单

asp.net - 哪里可以获得 MVC4 的源代码

javascript对正数和负数的限制,带有基于onkeyup和onkeypress的分隔符逗号

c# - 使用 IQueryable 创建动态查询