CS0120:非静态字段、方法或属性“System.Web.UI.Control.Controls.get”需要对象引用

本文关键字:Controls Control UI Web get 对象引用 System 静态 字段 属性 方法 | 更新日期: 2023-09-27 18:37:17

我知道有很多关于这个主题的问题,但似乎没有一个对我的情况有帮助,所以我发布了另一个问题。

我得到了一个项目,并要求将项目拆分为单独的控件。 最初,项目中有一个名为"events"的文件夹,它引用了一个名为"EventsRssFeedControl"的控件。 我的老板要求我将事件和 EventsRssFeedControl 分开,并将它们放在自己的项目中。 所以我照做了。 我更改了所有命名空间并得到了要编译的所有内容。 但是当我尝试导航到那里时,我收到一个错误。说明:编译处理此请求所需的资源时出错。请查看以下特定错误详细信息并相应地修改源代码。

编译器错误消息:CS0120:非静态字段、方法或属性"System.Web.UI.Control.Controls.get"需要对象引用

源错误:

<input type="hidden" name="selectedDate" value="<%= UMNEventsRssFeedControl.Controls.UMNEventsRssFeedControl.SelectedDateStr %>"/>

我的代码看起来像这样,我对称它为"非静态"感到困惑,并且对为什么它不起作用感到更加困惑。

        private static string _selectedDateStr;
    public static string SelectedDateStr
    {
        get { return _selectedDateStr; }
        set { _selectedDateStr = value; }
    }

它在旧项目中工作,唯一更改的是命名空间和对新命名空间的调用。

CS0120:非静态字段、方法或属性“System.Web.UI.Control.Controls.get”需要对象引用

问题实际上不在于SelectedDateStr .

UMNEventsRssFeedControl.Controls要求UMNEventsRssFeedControl的属性Controls静态获取器。显然,Controls是上述类的实例属性。

您需要提供 UMNEventsRssFeedControl 的实例才能使代码正常工作。

你的命名空间和类被命名为相同的东西。别这样。