无法使用字典项填充模型

时间:2013-11-01 11:34:42

标签: c# asp.net-mvc asp.net-mvc-3

我有几个课程,我很难填充:

   public class ta_Room
   {
    public string url { get; set; }
    public double price { get; set; }
    public string room_code { get; set; }
   }

   public class ta_Hotel2
   {
    public int hotel_id { get; set; }
    public Dictionary<string, ta_Room> room_types { get; set; }
   }

在我的控制器中我有:

    [HttpGet]
    public ta_Hotel2 hotel_inventory() //int api_version, string lang)
    {
        {
            ta_Room room = new ta_Room();
            room.price = 23;
            room.room_code = "1";
            room.url = "http://www.nme.com";

            ta_Hotel2 hotel = new ta_Hotel2();
            hotel.room_types.Add("Single", room);

但是我在上面的最后一行得到了NullReferenceException。

在下面的屏幕截图中,它显示了酒店和房间对象都已创建 - 有人可以告诉我我做错了吗?

谢谢,

标记

ss

2 个答案:

答案 0 :(得分:3)

错误是由于您未在room_types内构建ta_Hotel2的实例。您应该按如下方式添加构造函数,或者只在hotel_inventory()中实例化它:

public class ta_Hotel2
{
    public int hotel_id { get; set; }
    public Dictionary<string, ta_Room> room_types { get; set; }

    public ta_Hotel2()
    {
       room_types = new Dictionary<string, ta_Room>();
    }
}

另请注意,从封装的角度来看,我还会在此之后将room_types的setter设为私有。而且,作为旁注,我还会按照建议here重命名您的课程和成员。

答案 1 :(得分:1)

在初始化之前,您无法为 hotel.room_types 指定值。与Efran建议的方式一样,在 ta_Hotel2 类中使用公共构造函数将解决您的问题。