3

任何人都可以帮我解决我的课堂问题吗?

我有一个地址类:

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; 表示对象引用未设置为对象实例的行。

我看不出我做错了什么。有人可以帮忙吗?

谢谢

特雷夫

4

4 回答 4

3

您需要创建一个新实例Address并将其分配给fromand 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);
}
于 2013-02-17T14:15:08.000 回答
2

我可以建议使用构造函数来初始化 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);
于 2013-02-17T14:22:05.287 回答
1

您已创建Route实例,但忘记创建Address(for fromand to) 的新实例:

var myroute = new Route
{
    from = new Address(),
    to = new Address()
};
于 2013-02-17T14:15:11.017 回答
0

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);
    }
于 2013-02-17T14:17:34.707 回答