我得到“非静态字段需要对象引用”.非静态方法的异常.我做错了什么?

本文关键字:静态方法 异常 错了 什么 静态 字段 对象引用 | 更新日期: 2023-09-27 18:10:18

我有一个默认页面和一个分析页面,在默认情况下,我有一些单选按钮来改变一个表,但我得到一个"非静态字段需要对象引用"编译异常,一切都是非静态的,我还没有弄清楚为什么我得到这个错误。

下面是_Default的代码:
public partial class _Default : System.Web.UI.Page {
    public bool Carro {
        get { return radCarroSi.Checked ;}
    }
}

下面是analysis的代码:

public partial class Analisis : System.Web.UI.Page {
    protected void Page_Load(object sender, EventArgs e) {
        if (!IsPostBack) {
        _Default prevPage = PreviousPage as _Default;
            if (prevPage != null) {
                if (_Default.Carro == true) {
                    row8.Visible = false;
                }
            }
        }
    }
}

你能帮我吗?我相信这很容易,但由于我是asp的新手,我还没有看到这个问题。

我得到“非静态字段需要对象引用”.非静态方法的异常.我做错了什么?

您没有_Default的实例:

你只是在引用类名,而不是类的实例。

进一步详细说明。

public class YourClass 
{
  public bool Carro { get; set; } 
}
YourClass instance = new YourClass();  // this would create a new instance of `YourClass`.

您可以像使用_Default.Carro一样使用instance.Carro来引用它

然而,我相信你正试图确定Carro的值是否已在页面中检查,ASP.NET不太像这样工作,你需要了解如何管理客户端和服务器之间的状态。这可以通过ViewState, Session, Cookies and Query Strings

实现

你不能检查一个单选按钮是否在另一个页面中被选中,所以这一行将不能在analysis页面中工作(此外,你甚至没有_Default的实例):

    if (_Default.Carro == true) {
        row8.Visible = false;
    }

您需要使用Session, Querystring或其他方法在页面之间传递单选按钮值