C#MVC类对象引用未设置为对象的实例
本文关键字:对象 实例 设置 对象引用 C#MVC | 更新日期: 2023-09-27 17:59:41
有人能帮我解决课堂上的问题吗?
我有一个地址类:
public class Address
{
public string addressDescription { get; set; }
public string addressNumber { get; set; }
public string adddressLine1 { get; set; }
public string adddressLine2 { get; set; }
public string adddressLine3 { get; set; }
public string addressPostCode { get; set; }
public double addressLatitude { get; set; }
public double addressLongitude { get; set; }
}
我有一个路线等级:
public class Route
{
public Address from { get; set; }
public Address to { get; set; }
}
在我的控制器中,我设置了一些伪信息,比如:
public ActionResult FareCalculator(string from , string to)
{
var myroute = new Route();
myroute.from.addressDescription = from;
myroute.from.addressLatitude = 51.481581;
myroute.from.addressLongitude = -3.179090;
myroute.to.addressDescription = to;
myroute.to.addressLatitude = 51.507335;
myroute.to.addressLongitude = -0.127683;
return View(myroute);
}
但当我运行该项目时,它落在了myroute.from.addressDescription=from上;一行表示对象引用未设置为对象的实例。
我看不出我做错了什么。有人能帮忙吗?
感谢
Trev
您需要创建一个新的Address
实例,并将其分配给from
和to
:
public ActionResult FareCalculator(string from , string to)
{
var myroute = new Route();
myroute.from = new Address(); // new instance
myroute.from.addressDescription = from;
myroute.from.addressLatitude = 51.481581;
myroute.from.addressLongitude = -3.179090;
myroute.to = new Address(); // new instance
myroute.to.addressDescription = to;
myroute.to.addressLatitude = 51.507335;
myroute.to.addressLongitude = -0.127683;
return View(myroute);
}
我可以建议使用构造函数初始化from和to字段吗?否则,每次使用Route类时都必须新建对象。
public class Route
{
public Address from { get; set; }
public Address to { get; set; }
public Route()
{
from = new Address();
to = new Address();
}
}
这样你就可以使用你提供的代码:
var myroute = new Route();
myroute.from.addressDescription = from;
myroute.from.addressLatitude = 51.481581;
myroute.from.addressLongitude = -3.179090;
myroute.to.addressDescription = to;
myroute.to.addressLatitude = 51.507335;
myroute.to.addressLongitude = -0.127683;
return View(myroute);
您已经创建了Route
实例,但忘记创建Address
的新实例(用于from
和to
):
var myroute = new Route
{
from = new Address(),
to = new Address()
};
myroute.from
和myroute.to
应该是Address
类的一个实例。
public ActionResult FareCalculator(string from , string to)
{
var myroute = new Route();
myroute.from = new Address();
myroute.from.addressDescription = from;
myroute.from.addressLatitude = 51.481581;
myroute.from.addressLongitude = -3.179090;
myroute.to = new Address();
myroute.to.addressDescription = to;
myroute.to.addressLatitude = 51.507335;
myroute.to.addressLongitude = -0.127683;
return View(myroute);
}