【问题标题】:List type property is created fine, but reads as null列表类型属性创建良好,但读取为 null
【发布时间】:2014-01-13 16:33:39
【问题描述】:

我有一个模型“Team”,它有一个属性“TeamMembers”,它是“TeamMember”类的列表。 “TeamMember”本身现在只有用于测试的 Id 和 Name 属性。

我自动创建了 CRUD 视图,可以输入“团队”的正常属性(Id、TeamName、位置等)就好了,但是视图当然不知道如何处理列表,所以(只是出于测试目的)我将其硬编码到 create 方法中:

var TeamMembers = new List<TeamMember>();
TeamMembers.Add(new TeamMembers { Name = "Bob" });
Team.TeamMembers = TeamMembers;

这似乎有效。当我创建新团队并在 Create 方法的末尾设置断点时,我可以在检查器/悬停中看到该条目。此外,在数据库中创建了一个表“TeamMember”(我将模型保存在本地数据库中),其中包含“bob”的条目,包括一个引用我刚刚创建的团队的 Team_Id。

现在,当我尝试输出团队的详细信息时,TeamMembers 返回“null”。没有错误,没有,只是“空”。它不应该返回一些东西吗?任何事物?一个对象,一个引用,...?

目标是创建一个团队并让 TeamMember 包含一大堆 TeamMember 条目,我以后可以对其进行迭代并将它们输出到列表中,等等。

谁能告诉我我的错误在哪里?是否有我没有掌握的概念,或者一些愚蠢的疏忽?

感谢您的宝贵时间。

【问题讨论】:

    标签: c# asp.net asp.net-mvc model visual-studio-2013


    【解决方案1】:

    您应该始终在类的构造函数中实例化列表。我不知道您使用哪种 DB 或 ORM(实体?),但框架通常会使用公共空构造函数实例化您的类,然后设置属性。这可能就是原因。

    这就是为什么每次您在 Team 的实例上工作时,您都可以确定该列表不为空。

    public class Team
    {
        public Team()
        {
             TeamMembers = new List<TeamMember>();
        }
    
        // ...
    
        public List<TeamMember> TeamMembers { get; set; }
    }
    

    那么你只需要这样做:

    // TeamMembers is not null anymore
    var team = new Team();
    team.TeamMembers.Add(new TeamMember { Name = "Bob" });
    

    【讨论】:

      【解决方案2】:

      您有一个小错误,您正在将TeamMembers 添加到TeamMembers

      应该如下(我也小写了TeamMembers变量):

          var teamMembers = new List<TeamMember>();
          teamMembers.Add(new TeamMember { Name = "Bob" });
          Team.TeamMembers = teamMembers;
      

      您还需要确保在您的操作中返回您的模型,即

          [HttpGet]
          public ActionResult Index()
          {
             var team = new FooModel();
             var teamMembers = new List<TeamMember>();
             teamMembers.Add(new TeamMember { Name = "Bob" });
             team.TeamMembers = teamMembers;
             return View(team);
          }
      

      【讨论】:

        猜你喜欢
        • 2021-11-28
        • 2023-01-31
        • 1970-01-01
        • 2019-11-02
        • 2018-11-05
        • 2021-12-03
        • 2019-06-25
        • 2019-02-24
        相关资源
        最近更新 更多