I am beginner in ASP.NET and C# programming. I have two clasees Phone and Report. I want to call function LookupNumber(Phone p) in Default.aspx.cs file and to get each returned value of array list, displaying returned values in labels controls. But I get this error:
Error 1 An object reference is required for the non-static field, method, or property 'PhoneLookup.Models.Phone.LookupNumber(Phone.Models.Phone)' C:\Users\Erik\Desktop\Phone\Phone\Default.aspx.cs 24 26 Phone
Error 2 An object reference is required for the non-static field, method, or property 'PhoneLookup.Models.Phone.LookupNumber(Phone.Models.Phone)' C:\Users\Erik\Desktop\Phone\Phone\Default.aspx.cs 24 26 Phone
Error 3 An object reference is required for the non-static field, method, or property 'PhoneLookup.Models.Phone.LookupNumber(Phone.Models.Phone)' C:\Users\Erik\Desktop\Phone\Phone\Default.aspx.cs 24 26 Phone
Here is my source code:
// Report.cs
namespace PhoneLookup.Models
{
public class Report
{
private String _name_surname;
private String _address;
private String _area_code;
private String _exchange;
private String _service_provider;
public Report()
{
_name_surname = String.Empty; _address = String.Empty; _area_code = String.Empty;
_exchange = String.Empty; _service_provider = String.Empty;
}
public String name_surname { get; set; }
public String address { get; set; }
public String area_code { get; set; }
public String exchange { get; set; }
public String service_provider { get; set; }
}
}
// Phone.cs Class
namespace PhoneLookup.Models
{
public class Phone
{
private Int16 _phone_number;
public Phone()
{
_phone_number = -1;
}
public Int16 phone_number { get; set; }
public Report[] LookupNumber(Phone p)
{
List<Report> lst = new List<Report>();
MySqlConnection Conn = new MySqlConnection(constr);
Conn.Open();
MySqlCommand Cmd = new MySqlCommand("SELECT * FROM Reports WHERE phone_number = @pn", Conn);
Cmd.Parameters.AddWithValue("@pn", p.phone_number);
MySqlDataReader Reader = Cmd.ExecuteReader();
while (Reader.Read())
{
lst.Add(new Report()
{
name_surname = Reader["name_surname"]).ToString(),
address = Reader["address"].ToString(),
area_code = Reader["area_code"].ToString(),
exchange = Reader["exchange"].ToString(),
service_provider = Reader["service_provider"].ToString(),
});
}
return lst.ToArray();
}
}
}
// Default.aspx.cs
protected void Button1_Click(object sender, EventArgs e)
{
Phone p = new Phone();
p.phone_number = Convert.ToInt16(q.Text);
// display name surname
Report[] ns = Phone.LookupNumber(p).Select(x => x.name_surname).ToArray();
// display adddress
Report[] ad = Phone.LookupNumber(p).Select(x => x.address).ToArray();
// display service provider
Report[] sp = Phone.LookupNumber(p).Select(x => x.service_provider).ToArray();
Label1.Text = ns.ToString();
Label2.Text = ad.ToString();
Label3.Text = sp.ToString();
}
Thanks to all!
Phoneinstance instead of it's type. Likevar p = new Phone();and callp.LookupNumber(...)etc. Or change thisLookupNumbermethod tostaticlikepublic static Report[] LookupNumber.